Deferred Deep Linkとは、ユーザーのデバイスにアプリがまだインストールされていない場合でも、遷移先のコンテキストを保持するメカニズムです。Branch Resourcesによると、アプリインストール後、システムは自動的に保存されたコンテキストを処理し、ユーザーをターゲット画面にリダイレクトします。Deferred Deep Linkは通常のディープリンクの主な問題——インストールされていないアプリでは機能しないこと——を解決します。
重要なポイント
Deferred Deep Linkは2段階で動作するディープリンクの一種です。まずユーザーがアプリインストール前にリンクをクリックし、インストール完了後にシステムがコンテキストを復元します。通常のディープリンクはアプリが既にインストールされている場合のみアプリを開きますが、deferredはすべての遷移パラメータを保存し、初回起動時にそれらを渡します。
このテクノロジーは、モバイルマーケティングの成長に伴い特に需要が高まりました。広告キャンペーンは多くの場合、まだアプリをインストールしていないユーザーをターゲットにします。deferred deep linkがない場合、そのような遷移はコンテキストなしで単にアプリをダウンロードするだけで終わり、ユーザーはターゲット画面ではなくメイン画面に到達することになります。
通常のディープリンクは、既にインストールされているアプリ内でターゲットコンテンツを開きます。アプリがインストールされていない場合、ブラウザはエラーを表示します。Deferred Deep Linkは中間サーバーを介して動作し、ユーザーをストアにリダイレクトし、インストール後に保存されたパラメータをアプリに通知します。これにより、deferredリンクはアプリの事前インストールを必要とせず、広告からコンテンツまでのエンドツーエンドのユーザージャーニーを提供します。
deferred deep linkの処理は3つの段階で構成されます。最初の段階では、ユーザーがリンクをクリックします——サーバーはアプリがインストールされているかどうかを判断します。インストールされていない場合、一意のセッション識別子を生成し、遷移パラメータを保存して、この識別子とともにユーザーをApp StoreまたはGoogle Playにリダイレクトします。
2番目の段階では、ユーザーがストアからアプリをインストールします。インストールと初回起動後、プラットフォームSDKがサーバーに接続し、デバイス識別子を送信して、保存された遷移パラメータを受け取ります。3番目の段階では、アプリが受信したデータを処理し、自動的にユーザーをターゲット画面にリダイレクトします。
リンククリックとインストールの間でパラメータを保存するために、さまざまなメカニズムが使用されます。iOSではiCloud Keychainまたはクリップボード、AndroidではInstall Referrer APIです。Firebase Dynamic LinksはブラウザのlocalStorageとストアのリファラルリンクの組み合わせを使用してセッション識別子を渡します。Branch.ioは複数のストレージにデータをバックアップする独自のプロトコルを採用しています。
iOSでは、deferred deep linkはUniversal LinksとShared Web Credentialsの組み合わせで実装されます。ユーザーがアプリのウェブサイトのUniversal Linkをクリックすると、Safariはアプリのドメインに関連付けられたiCloud Keychainに遷移パラメータを保存します。App Storeからアプリをインストールした後、iOSは保存されたデータの有無を確認し、初回起動時にアプリに渡します。
Appleはdeferred deep linkの組み込みAPIを提供していません——実装は完全にサードパーティのSDKに委ねられています。Firebase Dynamic Linksはpassive deferredメカニズムを使用しており、データはブラウザのクッキーに保存され、アプリの初回起動時に特別なURLへのリダイレクトを介して復元されます。
iOS 14以降、Appleはプライバシールールを厳格化し、deferred deep linkのメカニズムに影響を与えました。クリップボードはユーザーの明示的な許可なしにデータを読み取るために使用できなくなりました。iCloud Keychainにもデータサイズの制限があり、1回の書き込みで4 KBまでです。そのため、一意のセッション識別子を使用したサーバーサイドソリューションが、コンテキストを渡すための好ましい方法となっています。
AndroidはInstall Referrer APIを通じて、deferred deep linkのより柔軟なオプションを提供します。ユーザーがGoogle Playへのリンクをクリックすると、ストアはリファラー(遷移パラメータを含む文字列)をキャプチャします。インストール後、アプリはInstall Referrer APIを介してこの文字列を受け取り、そこからターゲットコンテキストを抽出します。これはAndroidで最も信頼性の高いdeferred deep linkメカニズムです。
Google Play以外で配布されるアプリの場合、AndroidはリファラルBroadcastReceiverをサポートしています。開発者はインストール後にパラメータを含むカスタムIntentを送信でき、アプリはマニフェストに登録されたBroadcastReceiverを介してそれを受け取ります。ただし、このメカニズムはインストーラーの実装に依存するため、信頼性が低くなります。
Install Referrer APIは、リファラーURL、クリック時間、インストール時間を含むインストールソースに関する情報を提供します。リファラー文字列の最大長は8 KBで、必要なすべてのディープリンクパラメータを渡すのに十分です。このAPIはGoogle Play Storeバージョン8.3.73以降のデバイスで利用可能で、Android 5.0(API 21)でサポートされています。
Firebase Dynamic Linksは、両方のプラットフォームでdeferred deep linkを実装する最も人気のある無料ツールです。Firebaseはdeferred遷移のすべての段階を自動的に処理します:アプリがない場合のストアへのリダイレクト、Firebaseサーバーへのパラメータ保存、アプリの初回起動時のSDKへの受け渡しです。
実装するには、プロジェクトにFirebase SDKを統合し、Firebase Consoleでディープリンクとキャンペーンパラメータを指定してDynamic Linkを作成するだけです。Firebase SDKはアプリ起動時に自動的に呼び出され、getDynamicLink()メソッドを介して受信したDynamic Linkを確認します。
KotlinのActivityでのdeferred Firebase Dynamic Link処理の例。コードはアプリ起動時のコールドスタートとウォームスタートの両方で同じように機能します。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDeferredLink()
}
private fun checkDeferredLink() {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deferredLink = link?.link.toString()
if (deferredLink.isNotEmpty()) {
navigateToContent(deferredLink)
}
}
}
}
getDynamicLink()メソッドはDynamicLinkオブジェクトを含むPendingTaskを返します。リンククリック後にアプリがインストールされた場合、リスナーはパラメータ付きのデータを受け取ります。遷移前にアプリが既にインストールされていた場合、メソッドは通常のディープリンクと同じデータを返します。リンクパラメータのminimumAppVersionフラグは、処理のための最小アプリバージョンを設定できます。
Deferred Deep Linkはマーケティングキャンペーンに大きな利点をもたらします:ユーザーは追加アクションなしでインストール後にターゲットコンテンツを受け取るため、コンバージョンとリテンションが向上します。リファラルプログラムでは、deferredリンクにより招待をインストールと新しいユーザーのアクションに明確に関連付けることができます。
ただし、このテクノロジーには制限もあります。deferred deep linkはサードパーティクッキーをブロックするブラウザでは機能せず、iOSバージョン14以降ではiCloud Keychainの追加設定が必要です。さらに、リンククリックからインストールまでに数日かかる場合があり、すべてのSDKがその期間のデータ保存を保証するわけではありません。
deferred deep linkは、新規ユーザーをターゲットにした広告キャンペーン、招待状付きのメールニュースレター、リファラルプログラムに必須です。既にインストールしているユーザーには、通常のディープリンクで十分です。アプリがマーケティングキャンペーンやリファラルメカニズムを使用しない場合、deferred deep linkは不要です——Universal LinksとApp Linksで十分です。
実装を選択する際は、コストを考慮してください:Firebase Dynamic Linksは無料ですが分析機能は限定的です。Branch.ioとAppsFlyerは高度なアトリビューションを提供しますが、サブスクリプションが必要です。小規模プロジェクトにはFirebaseが最適なソリューションであり、数十の広告チャネルを持つエンタープライズには商用MMPが選択肢となります。
よくある質問
通常のディープリンクはアプリがインストールされている必要があり、直接アプリを開きます。Deferred Deep Linkはアプリがインストールされていなくても機能します——ストアにリダイレクトし、インストール後に遷移コンテキストを復元してターゲット画面を開きます。
保存期間はプラットフォームによって異なります。Firebase Dynamic Linksはパラメータを最長30日間保存します。Branch.ioは最長90日間データを保持します。Androidでは、Install Referrer APIはアプリが最初に読み取るまでリファラー文字列を保存しますが、90日を超えることはありません。
デスクトップでは、コンピュータのストアからアプリをインストールできないため、deferred deep linkは意味がありません。デスクトップからリンクをクリックすると、ユーザーにはフォールバックURL——コンテンツのウェブバージョンまたはモバイルデバイスにインストールするためのQRコード付きページ——が表示されます。
Chrome、Safari、Samsung InternetはクッキーとlocalStorageのメカニズムを通じてdeferred deep linkをサポートしています。Firefoxは厳格なサードパーティクッキーブロックポリシーのため、サポートが制限されています。最大限のカバレッジを得るには、FirebaseまたはBranch.ioのSDKを使用することをお勧めします。
技術的には、中間サーバーとリファラルメカニズムを介して独自のソリューションを実装できます。ただし、サーバーインフラの開発と保守、クッキーの処理、各ストアとの統合、さまざまなプラットフォームでの問題解決が必要です。既製のFirebaseおよびBranch.io SDKは、開発を数十倍加速します。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。