🔗

カスタムURLスキームとユニバーサルリンクの違いを理解する

2024/06/29に公開

はじめに

ディープリンクとは、モバイルユーザーがURLをクリックした時に、ウェブサイトではなく、アプリを起動してアプリ内の関連ページに遷移させる技術です。

例えば下記のような挙動です

  • メールから直接アプリを開く
  • ブラウザーでGoogle Mapsを開いた時に「アプリで開く」をクリックしたらアプリが立ち上がり、該当の画面に遷移する

メールやQRコード経由で直接アプリを開く必要があるプロダクトにとってディープリンク機能は特に必要です。

ディープリンクを実装する方法が2つあります。1つ目はカスタムURLスキーム、もう1つはユニバーサルリンクです。この記事ではその2つの仕様と違いついて話したいと思います。

カスタムURLスキームとは

カスタムURLスキームはmyapp://のよう、独自のURLスキームを利用してアプリを直接起動させるURLです。

例えば、以下のような形のURLです。

comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic

上記をGoogleマップアプリインストール済みのスマホで開くと、Googleマップアプリが起動されます。(アプリがインストールされてない場合は機能しません)

もしブラウザーで開く場合は以下のようなダイアログが出ますが、アプリがインストールされてない場合やユーザーが許可しない場合は機能しないので、注意が必要です。

また、カスタムURLスキームは他のアプリとスキームが重複する場合があります。その場合、AndroidだとそのURLを開きたいアプリを選択することができますが、iOSだとベージョンによって機能しない場合もあるため、注意が必要です。

メリット デメリット
実装が楽 アプリをインストールしてない場合機能しない
ユーザーの許可が必要
他のアプリとスキームが重複する可能性がある

カスタムURLスキームは簡単に実装できます。アプリにカスタムURLスキームを登録(iOSの場合Xcodeで)したら、iOSがカスタムURLスキームを認知できるようになり、アプリが起動される仕様です。

詳しい実装方法については、以下の公式ドキュメントで確認できます。
https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app

ユニバーサルリンクとは

ユニバーサルリンクはAppleが開発した技術で、HTTPS URLでアプリを起動させることができます。
(※Androidは「アプリリンク」という類似の技術を利用します。)

ユニバーサルリンクの仕組みは少し複雑なため、Googleマップをブラウザーで開いた時を例として裏処理を簡単に話したいと思います。

  1. ユーザーがhttps://maps.google.comにアクセスする

  2. iOSがhttps://maps.google.com/apple-app-site-association にリクエストを送る

すると、以下のようなJSONが返されます

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "EQHXZ8M8AV.com.google.Dzimuth",
        "paths": [
          "/",
          "/maps",
  1. 上記のappIDを確認し、該当のアプリを開く

上記の対応が必要なため、ユニバーサルリンクの実装は少し複雑です。実装方法の詳細については公式ページで確認できます。

https://developer.apple.com/documentation/xcode/supporting-associated-domains

ユニバーサルリンクは(2)にてドメイン認証を行なっているため、セキュリティ的にも安全ですし、他のアプリとも競合しないメリットがあります。

メリット デメリット
アプリがインストールされてない場合のフォールバックが入っている(Webにリダイレクト) 実装が複雑
ユーザーの許可が不要
他のアプリと競合しない

まとめ(TL;DR)

カスタムURLスキーム

  • myapp://のよう形式のURLでアプリを起動させる
  • 実装が楽
  • アプリをインストールしてない場合は機能しない

ユニバーサルリンク

  • HTTPS URLでアプリを起動させる
  • 実装が複雑
  • アプリをインストールしてない場合、WEBにリダイレクトする
  • セキュリティ的に良い

ユーザーが必ずアプリをインストールしていると保証できる場合はカスタムURLスキームで大丈夫ですが、それ以外の場合はユニバーサルリンクの利用がおすすめです。

Discussion