作成した 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
) で、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' }
- 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を使用してアプリをアップグレードするようにユーザーをリダイレクトする必要があります。
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2023-01-31 UTC.
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"必要な情報がない" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"複雑すぎる / 手順が多すぎる" },{ "type": "thumb-down", "id": "outOfDate", "label":"最新ではない" },{ "type": "thumb-down", "id": "translationIssue", "label":"翻訳に関する問題" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"サンプル / コードに問題がある" },{ "type": "thumb-down", "id": "otherDown", "label":"その他" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"わかりやすい" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"問題の解決に役立った" },{ "type": "thumb-up", "id": "otherUp", "label":"その他" }]