アプリを作るとき、URLをクリックしたときに、アプリがインストールされていれば、アプリを立ち上げたい。
このとき最も良い方法をまとめます。
Deep Link
用途
特定の技術を説明した言葉ではなく、アプリの特定のページを開くことが出来るリンクを表す。
実装方法
以下に説明する方法のいずれでも実現可能です。
App Links または Universal Link
用途
特定のURLを開くとき、アプリがあればアプリを起動、なければ通常通りWebブラウザで表示、という実装をしたい場合に利用します。
リンクを選択時、アプリ選択画面が表示されない点がポイントです。
実装時の注意点
・iOSは、https://{domain}/ などですでにWebブラウザでページを見ているときに、https://{domain}/items/1 などのUniversal Link をクリックした場合、domain が同じであれば、アプリは反応しない
・アプリ内で https://{domain}/items/1 のような Universal Link を起動させた場合、Webブラウザが起動する
実装方法
Android: intent-filter と android:autoVerify="true" の設定、検証URL https://{domain}/.well-known/assetlinks.json
iOS: Associated Domains の applinks に、ドメインの設定、検証URLの作成 https://{domain}/.well-known/apple-app-site-association
https://developer.android.com/training/app-links/verify-site-associations
https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html
Firebase Dynamic Links
アプリを開く挙動の場合、技術的には、App Links または Universal Link が使われています。
Googleによって、特定のWebページをブラウザで開く / ストアを開く / アプリを開く、が自動でハンドリングされる機能です。
利用イメージとしては、短縮URLサービスのように、事前にWebページの登録をし、ユニークURLを発行します。リンク選択時に、いずれかにリダイレクトするような挙動です。
実装時の注意点
・短縮URLと同じように、ユニークURL発行後に、パラメーターを追加することが出来ない
具体例では、https://sample.page.link/items のようなユニークURLを作成した場合、https://sample.page.link/items?id=1 にアクセスしアプリが起動しても、id=1 の部分がアプリから認識できません。
・ユニークURLは、そのページに直接アクセスすることは出来ない
必ず別URL、ストア、アプリのいずれかに遷移をします。
すでにWebサービスがあり、そのURLにアクセスした場合、アプリがインストールされていたらアプリで開く、としたい場合には利用できません。ユニークURL自体は、ページとして表示できないからです。
アプリやサーバー上で、動的にユニークURLの発行をすることが出来るので、idなどパラメーターの付加が必要であれば、idの数ぶん、動的であったり、事前にユニークURLを作成したりする必要があります。
ちなみに、ただの短縮URLのサービスとして使うことも出来ます。
実装方法
DeepLinkの設定と、Firebase上などでユニークURLの発行が必要です。
https://firebase.google.com/docs/dynamic-links?hl=ja