作成した Firebase Dynamic Links を受信するには、アプリに Dynamic Links SDK を組み込み、アプリが読み込まれるときに FirebaseDynamicLinks.getDynamicLink()
メソッドを呼び出して、Dynamic Link で渡されたデータを取得する必要があります。
Firebase と Dynamic Links SDK を設定する
まだ追加していない場合は、Firebase を Android プロジェクトに追加します。
アプリを登録するときは、SHA-1 の署名鍵を指定してください。アプリリンクを使用する場合は SHA-256 の鍵も指定します。
-
モジュール(アプリレベル)の Gradle ファイル(通常は
<project>/<app-module>/build.gradle.kts
または<project>/<app-module>/build.gradle
)に、Android 用 Dynamic Links ライブラリの依存関係を追加します。ライブラリのバージョニングの制御には、Firebase Android BoM を使用することをおすすめします。Dynamic Links でのエクスペリエンスを最適化するために、Firebase プロジェクトで Google Analytics を有効にして、Google アナリティクス用の Firebase SDK をアプリに追加することをおすすめします。
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.6.0")) // Add the dependencies for the Dynamic Links and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links' implementation 'com.google.firebase:firebase-analytics' }
Firebase Android BoM を使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。
(代替方法)BoM を使用せずに Firebase ライブラリの依存関係を追加する
Firebase BoM を使用しない場合は、依存関係の行でそれぞれの Firebase ライブラリのバージョンを指定する必要があります。
アプリで複数の Firebase ライブラリを使用する場合は、すべてのバージョンの互換性を確保するため、BoM を使用してライブラリのバージョンを管理することを強くおすすめします。
dependencies { // Add the dependencies for the Dynamic Links and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-dynamic-links:22.1.0' implementation 'com.google.firebase:firebase-analytics:22.1.2' }
- Firebase コンソールで、[Dynamic Links] セクションを開きます。利用規約に同意するための画面が表示された場合は、同意します。
ディープリンク用のインテント フィルタを追加する
通常のディープリンクと同様に、アプリのディープリンクを処理するアクティビティに新しいインテント フィルタを追加する必要があります。アプリがインストールされた場合に Dynamic Link がドメインへのリダイレクトを実行することになっているため、そのドメインのディープリンクをインテント フィルタでキャッチする必要があります。これは、アプリが Play ストアからインストールまたは更新され、[続行] ボタンがタップされた後に Dynamic Link データを受け取るために必要です。AndroidManifest.xml
では次のようになります。
<intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="example.com" android:scheme="https"/> </intent-filter>
指定したスキームとホストへのディープリンクを持つ Dynamic Link をユーザーが開くと、アプリはこのインテント フィルタを使用してリンクを処理するアクティビティを開始します。
ディープリンクを処理する
ディープリンクを受信するには、getDynamicLink()
メソッドを次のように呼び出します。
Kotlin+KTX
Firebase.dynamicLinks .getDynamicLink(intent) .addOnSuccessListener(this) { pendingDynamicLinkData: PendingDynamicLinkData? -> // Get deep link from result (may be null if no link is found) var deepLink: Uri? = null if (pendingDynamicLinkData != null) { deepLink = pendingDynamicLinkData.link } // Handle the deep link. For example, open the linked // content, or apply promotional credit to the user's // account. // ... } .addOnFailureListener(this) { e -> Log.w(TAG, "getDynamicLink:onFailure", e) }
Java
FirebaseDynamicLinks.getInstance() .getDynamicLink(getIntent()) .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() { @Override public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) { // Get deep link from result (may be null if no link is found) Uri deepLink = null; if (pendingDynamicLinkData != null) { deepLink = pendingDynamicLinkData.getLink(); } // Handle the deep link. For example, open the linked // content, or apply promotional credit to the user's // account. // ... // ... } }) .addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "getDynamicLink:onFailure", e); } });
リンクによって起動されるすべてのアクティビティで getDynamicLink()
を呼び出してください。getIntent().getData()
を使用してインテントからリンクを取得できる場合でも呼び出す必要があります。getDynamicLink()
を呼び出すと、リンクが取得されてデータがクリアされるため、アプリで処理されるのは 1 回だけとなります。
通常、メイン アクティビティの getDynamicLink()
と一緒に、リンクに一致するインテント フィルタで起動したアクティビティも呼び出します。
分析用データを記録する
次のイベントは Google Analytics で自動的に追跡し、Firebase コンソールに表示することができます。
dynamic_link_app_open
dynamic_link_first_open
dynamic_link_app_update
これらのイベントを登録するには、ディープリンクを取得する前に Google Analytics を構成する必要があります。次の条件が満たされていることを確認します。
- アプリのエントリ ポイントで
FirebaseDynamicLinks.getDynamicLink()
を呼び出す。 - ランチャー アクティビティ。例:
action="android.intent.action.MAIN"
、category="android.intent.category.LAUNCHER"
- アクティビティのエントリ ポイント。例:
onStart()
、onCreate()
。 - ディープリンク アクティビティ。
- Google Analytics のセットアップと使用
- Google Analytics の依存関係を含めます。通常、
google-services
Gradle プラグインで自動的に追加されます。 - アプリに
google-services.json
構成ファイルを組み込む。 FirebaseDynamicLinks.getDynamicLink()
の前にFirebaseAnalytics.getInstance()
を呼び出す。
アプリリンクを使用した Dynamic Links の処理
Android 6.0(API レベル 23)以降では、アプリがすでにインストールされている場合に、Android アプリリンクを使用して Dynamic Links を直接処理するようにアプリを設定できます。
Firebase コンソールで、アプリの SHA256 証明書のフィンガープリントがプロジェクトに追加されていることを確認します。Dynamic Links は、Dynamic Links ドメインに対してアプリリンクのウェブサイトの関連付けを設定します。
Dynamic Link を処理するアクティビティに、自動検証されたインテント フィルタを追加します。その際、ホストは Firebase コンソールにあるプロジェクトの Dynamic Links ドメインに設定します。AndroidManifest.xml
で次のように記述します。
<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:host="example.com/link" android:scheme="http"/> <data android:host="example.com/link" android:scheme="https"/> </intent-filter>
android:host
は、ディープリンクのドメインではなく、Dynamic Links ドメインに設定する必要があります。
アプリリンクでエンゲージメントを促進するには、マニフェストのすべての autoVerify
インテント フィルタを登録する必要があります。Firebase は、Dynamic Links ドメインにこの処理を自動的に行いますが、Dynamic Links ドメインでホストされている assetlinks.json
ファイルを開いて設定を確認することもできます。
https://YOUR_DOMAIN/.well-known/assetlinks.jsonすべての Firebase アプリのパッケージ名を含める必要があります。
以上で、Dynamic Links がアプリに直接送信されるようになります。アプリリンクのインテント フィルタを追加したアクティビティの getDynamicLink()
を呼び出すことで、ディープリンクやその他の Dynamic Link データを取得できます(ディープリンクを処理するをご覧ください)。
注: アプリリンクからの呼び出しはユーザーをアプリに直接誘導するため、ダイナミック リンクは必要な最小バージョンの情報を使用できません。したがって、アプリが開かれた後に、ダイナミック リンクの最小バージョン(getminimumappversion)と PackageInfo.versionCode を比較する必要があります。その後、必要に応じて getUpdateAppIntent を使用してユーザーにアップグレードを求める案内を表示します。