ディープリンク
ディープリンクとは、AndroidやiOSでURLのリンクを開くとアプリが起動する仕組みのことです。ディープリンクから起動されたとき、アプリではそのURLを取得できます。
ディープリンクからアプリを起動したときに、そのURLに応じた画面を表示したり、URLパラメータに従った初期値を設定するなど、幅広く活用できます。このようにディープリンクを利用することで、ユーザが簡単に目的を達成できるようになります。
このアプリでもディープリンクを利用し、実現するためにFirebase Dynamic Linksを採用します。以降、その実現方式を記載します。
全体の構成
Firebase Dynamic LinksはOSの機能(Universal Link(iOS)、App Links(Android))を拡張したFirebaseの機能です。
以降、次の用語を使ってその全体像を紹介します。
用語 | 説明 |
---|---|
ディープリンクURL | ユーザが開くURLで、OSがドメインとの関連を検証するときに利用するURLです。OSの検証が成功するとアプリケーションに渡されます。Dynamic Linksではパラメータ部分にコンテンツリンクURLなどを保持します。 |
コンテンツリンクURL | アプリで表示したいコンテンツをあらわすURLです。(OSの機能だけの場合はディープリンクURLと同じです)Dynamic Linksではアプリと関連付けていないドメインのURLも渡すことができます。 |
ウェブサイト | ディープリンクURLを開いたときにアプリケーションがインストールされていないときに開くサイトです。 |
プレビューページ | iOSでディープリンクURLに対応するアプリケーションがインストールされていない場合に表示されるページです。 |
フォールバックURL1 | アプリがインストールされていない場合にユーザを誘導するURLです。Androidではウェブサイトから自動でリダイレクトされ、iOSではプレビューページに配置されるボタンから誘導します。App StoreやGoogle Playなどアプリのインストール用のURLを設定します。 |
OSの機能ではディープリンクURLを開くと、下記の図のようにOSがアプリとディープリンクURL(ドメイン)の関連を検証します。 インストールされているアプリケーションとドメインが相互に関連を持っていることが検証できると、対象のアプリケーションを起動してディープリンクURLを渡します。
アプリケーションとドメインを関連付ける方法については、次のサイトを参照してください。
OSの機能では、アプリをインストールしていなければディープリンクURLのウェブサイトを表示します。(ウェブサイトがなければエラー画面が表示されます)
Firebase Dynamic Linksの拡張機能では、未インストールのユーザがディープリンクURLを開くとアプリのインストールページ(フォールバックURL)に誘導します。この際、Androidでは自動的にフォールバックURLが表示され、iOSではフォールバックURLへのリンクのあるプレビューページが表示されます。 さらに、ユーザがアプリをインストールして起動すると①で開いたディープリンクURLをアプリに渡せるため、ユーザがもう一度ディープリンクを開く必要が有りません。
利用するライブラリ
React NativeでFirebase Dynamic Linksを利用するためにReact Native Firebase Dynamic Linksを利用します。
React NativeにはOS機能の範囲のディープリンクを扱うLinkingという機能が含まれていますが、ディープリンクURLからコンテンツリンクURLを取得する機能はありません。また、全体の構成にて破線で示しているDynamic Linksの拡張機能にも対応していません。
React Native Firebaseの導入についてはReact Native FireabaseとDynamic Linkを参照してください。
ディープリンクURLに対応するウェブサイト
アプリケーションがインストールされていない場合、ブラウザでディープリンクのURLが開かれます。ディープリンクのURLに対応するウェブサイトが存在していないと、ユーザはコンテンツへの導線を失います。インストールしていないユーザの導線を確保するために、ディープリンクを利用する場合はウェブサイトも一緒に準備することが望ましいです。
このアプリでは、ウェブサイトとしてDynamic Linksがデフォルトで提供するウェブサイトとアプリのプレビューページを利用します。ウェブサイトやプレビューページではURLに対応するコンテンツ自体は表示できませんが、ストアなどに誘導できるため、ユーザが導線を失うことにはなりません。
環境の切り替え
開発やテストは本番環境とは切り離された環境で実施します。ディープリンクに関しても同じように「テスト用のアプリを起動するディープリンクURL」と「本番アプリを起動するディープリンクURL」を分ける必要があります。
これまで説明してきたとおり、ディープリンクではディープリンクURLに対してアプリIDと証明書の組み合わせを確認して、起動するアプリケーションが決定されます。このとき利用されるのはドメイン名だけではなく、URLのパス部分も含めて確認されます。
これらを利用して、ディープリンクURLのドメイン部分とパス部分の組み合わせに応じて、起動するアプリが変わるように設定します。
関連する決定事項
- ユーザがiOSやAndroid以外のOSでアクセスした場合、フォールバックURLではなく、コンテンツリンクURLをブラウザで開きます。↩
- iOSで関連するドメイン(Associated Domains)の機能を利用するためにはADPかADEPライセンスが必要です。↩