Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

AndroidでFirebaseDynamicLinksを受け取る

作成した Firebase Dynamic Links を受け取るには、Dynamic Links SDK をアプリに組み込み、アプリの読み込み時にFirebaseDynamicLinks.getDynamicLink()メソッドを呼び出して、Dynamic Link で渡されたデータを取得する必要があります。

  1. まだ行っていない場合は、 Firebase を Android プロジェクトに追加します

    アプリを登録するときに、SHA-1 署名キーを指定します。アプリ リンクを使用する場合は、SHA-256 キーも指定します。

  2. モジュール (アプリ レベル) の Gradle ファイル(通常は<project>/<app-module>/build.gradle ) で、Dynamic Links Android ライブラリの依存関係を追加します。ライブラリのバージョン管理には、 Firebase Android BoMを使用することをお勧めします。

    Dynamic Links で最適なエクスペリエンスを得るには、Firebase プロジェクトでGoogle アナリティクスを有効にし、Google アナリティクス用の Firebase SDK をアプリに追加することをお勧めします。

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.2.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-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    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-ktx:21.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
    }
    

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.2.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:21.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    
  3. Firebase コンソールで、[ Dynamic Links]セクションを開きます。プロンプトが表示されたら、利用規約に同意します。

通常のディープ リンクと同様に、アプリのディープ リンクを処理するアクティビティに新しいインテント フィルタを追加する必要があります。アプリがインストールされている場合、ダイナミック リンクはドメインにリダイレクトされるため、インテント フィルターはドメインのディープ リンクをキャッチする必要があります。これは、アプリが 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>

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

ディープ リンクを受け取るには、 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);
            }
        });

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

通常は、メイン アクティビティでgetDynamicLink()を呼び出します。また、リンクに一致するインテント フィルタによって起動されるアクティビティも呼び出します。

記録分析

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

  • dynamic_link_app_open
  • dynamic_link_first_open
  • dynamic_link_app_update

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

  • アプリのエントリ ポイントでFirebaseDynamicLinks.getDynamicLink()を呼び出します。
    • ランチャー活動。例: action="android.intent.action.MAIN"category="android.intent.category.LAUNCHER"
    • アクティビティのエントリ ポイント。例: onStart()onCreate()
    • ディープ リンク アクティビティ。
  • Google アナリティクスを設定して使用する:
    • Google アナリティクスの依存関係を含めます。これは通常、 google-services Gradle プラグインによって自動的に追加されます。
    • アプリgoogle-services.jsonファイルを含めます。
    • FirebaseAnalytics.getInstance()を呼び出す前に、 FirebaseDynamicLinks.getDynamicLink() ) を呼び出します。

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

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

ダイナミック リンクを処理するアクティビティに自動検証インテント フィルタを追加し、ホストをFirebase コンソールにあるプロジェクトのダイナミック リンク ドメインに設定します。 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 がアプリに直接送信されるようになりました。 App Links インテント フィルターを追加したアクティビティでgetDynamicLink()を呼び出すことにより、ディープ リンクやその他のダイナミック リンク データを取得できます (「ディープリンクの処理」を参照)。

注:アプリ リンクを介して呼び出すと、ユーザーは直接アプリに移動するため、ダイナミック リンクは必要な最小バージョンを受け入れることができません。したがって、アプリが開いたら、ダイナミック リンクの最小バージョン ( getminimumappversion ) をPackageInfo.versionCodeと比較し、必要に応じてgetUpdateAppIntentを使用してアプリをアップグレードするようにユーザーをリダイレクトする必要があります。