Android で Firebase Dynamic Links を受信する

作成した Firebase Dynamic Links を受信するには、Dynamic Links SDK をアプリに組み込み、アプリが読み込まれるときに FirebaseDynamicLinks.getDynamicLink() メソッドを呼び出して、ダイナミック リンクで渡されたデータを取得する必要があります。

Firebase と Dynamic Links SDK を設定する

  • Firebase を Android プロジェクトに追加します。Firebase Dynamic Links の依存関係をアプリレベルの build.gradle ファイルに追加します。
    implementation 'com.google.firebase:firebase-dynamic-links:16.1.5'
  • アプリを Firebase プロジェクトに接続していない場合は、Firebase コンソールで接続します。
  • Firebase コンソールで [Dynamic Links] セクションを開きます。利用規約に同意するための画面が表示された場合は、同意します。

ディープリンク用のインテント フィルタを追加する

通常のディープリンクと同様に、アプリのディープリンクを処理するアクティビティに新しいインテント フィルタを追加する必要があります。アプリがインストールされた場合にダイナミック リンクがドメインへのリダイレクトを実行することになっているので、そのドメインのディープリンクをインテント フィルタでキャッチする必要があります。これは、アプリが Play ストアからインストールまたは更新され、[続行] ボタンがタップされた後にダイナミック リンクデータを受け取るために必要です。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>

指定したスキームとホストへのディープリンクを持つダイナミック リンクをユーザーが開くと、アプリはこのインテント フィルタを使用してリンクを処理するアクティビティを開始します。

ディープリンクを受信するには、getDynamicLink() メソッドを次のように呼び出します。

Java
Android

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);
            }
        });

Kotlin
Android

FirebaseDynamicLinks.getInstance()
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { 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) }

リンクによって起動されるすべてのアクティビティで getDynamicLink() を呼び出してください。getIntent().getData() を使用してインテントからリンクを取得できる場合でも呼び出す必要があります。getDynamicLink() を呼び出すと、リンクが取得されてデータがクリアされるため、アプリで処理されるのは 1 回だけとなります。

通常、メイン アクティビティの getDynamicLink() と一緒に、リンクに一致するインテント フィルタで起動したアクティビティも呼び出します。

解析結果を記録する

次のイベントは、Firebase 向け Google アナリティクスで自動的に追跡され、Firebase コンソールに表示されます。

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

これらのイベントを登録するには、ディープリンクを取得する前に Firebase 向け Google アナリティクスを構成する必要があります。次の条件が満たされていることを確認します。

  • アプリのエントリ ポイントで FirebaseDynamicLinks.getDynamicLink() を呼び出す。
    • ランチャー アクティビティ。例: action="android.intent.action.MAIN"category="android.intent.category.LAUNCHER"
    • アクティビティのエントリ ポイント。例: onStart()onCreate()
    • ディープリンク アクティビティ
  • Firebase 向け Google アナリティクスをセットアップして使用する。
    • Firebase 向け Google アナリティクスの依存関係を組み込む。通常、google-services Gradle プラグインで自動的に追加されます。
    • アプリに google-services.json 構成ファイルを組み込む
    • FirebaseDynamicLinks.getDynamicLink() を呼び出す前に FirebaseAnalytics.getInstance() を呼び出す。

Android 6.0(API レベル 23)以上では、アプリがすでにインストールされている場合に、Android アプリリンクを使用して Dynamic Links を直接処理するようにアプリをセットアップできます。

Firebase コンソールで、アプリの SHA256 証明書のフィンガープリントがプロジェクトに追加されていることを確認します。Dynamic Links は、Dynamic Links ドメインに対してアプリリンクのウェブサイトの関連付けをセットアップします。

Dynamic Links を処理するアクティビティに、自動検証されたインテント フィルタを追加します。その際、ホストは 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.page.link" android:scheme="http"/>
    <data android:host="example.page.link" android:scheme="https"/>
</intent-filter>

android:host は、ディープリンクのドメインではなく、Dynamic Links ドメインに設定する必要があります。

アプリリンクでユーザーを惹きつけるには、マニフェストのすべての autoVerify インテント フィルタを登録する必要があります。Firebase は、Dynamic Links ドメインにこの処理を自動的に行いますが、Dynamic Links ドメインでホストされている assetlinks.json ファイルを開いて設定を確認することもできます。

https://YOUR_SUBDOMAIN.page.link/.well-known/assetlinks.json
Firebase アプリのパッケージ名のすべてを含める必要があります。

以上で、ダイナミック リンクがアプリに直接送信されるようになります。アプリリンクのインテント フィルタを追加したアクティビティで getDynamicLink() を呼び出すことにより、ディープリンクや他のダイナミック リンクのデータを取得できます(ディープリンクを処理する手順をご覧ください)。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。