要接收您創建的Firebase 動態鏈接,您必須在您的應用中包含動態鏈接 SDK,並在您的應用加載時調用FirebaseDynamicLinks.getDynamicLink()
方法以獲取動態鏈接中傳遞的數據。
設置 Firebase 和動態鏈接 SDK
如果您還沒有,請將 Firebase 添加到您的 Android 項目中。
當您註冊您的應用程序時,請指定您的 SHA-1 簽名密鑰。如果您使用 App Links,還請指定您的 SHA-256 密鑰。
在您的模塊(應用程序級別)Gradle 文件(通常是
<project>/<app-module>/build.gradle
)中,添加動態鏈接 Android 庫的依賴項。我們建議使用Firebase Android BoM來控制庫版本。為了獲得動態鏈接的最佳體驗,我們建議在您的 Firebase 項目中啟用 Google Analytics ,並將適用於 Google Analytics 的 Firebase SDK 添加到您的應用程序中。
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.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.3.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.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.3.0' }
- 在Firebase 控制台中,打開動態鏈接部分。如果系統提示您接受服務條款,請接受。
為深層鏈接添加意圖過濾器
與普通深層鏈接一樣,您必須向處理應用程序深層鏈接的活動添加一個新的意圖過濾器。 Intent 過濾器應該捕獲您域的深層鏈接,因為如果安裝了您的應用程序,動態鏈接將重定向到您的域。這是您的應用在從 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>
當用戶打開包含指向您指定的方案和主機的深層鏈接的動態鏈接時,您的應用程序將使用此 Intent 過濾器啟動 Activity 以處理該鏈接。
處理深層鏈接
要接收深層鏈接,請調用
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()
Intent 中可用。調用getDynamicLink()
檢索鏈接並清除該數據,以便您的應用僅處理一次。您通常會在主活動中調用
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
配置文件。 - 在調用
FirebaseAnalytics.getInstance()
之前調用FirebaseDynamicLinks.getDynamicLink()
。
使用 App Links 處理動態鏈接
在 Android 6.0(API 級別 23)及更高版本上,您可以使用Android App Links將應用設置為在已安裝應用時直接處理動態鏈接。
確保您已將應用程序的 SHA256 證書指紋添加到Firebase 控制台中的項目中。動態鏈接將處理為您的動態鏈接域設置應用程序鏈接網站關聯。
將自動驗證的意圖過濾器添加到將處理動態鏈接的活動,將主機設置為在 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
必須設置為您的動態鏈接域,而不是深層鏈接的域。清單中的所有
autoVerify
intent 過濾器都必須註冊才能使用 App Links。 Firebase 會自動為您的動態鏈接域處理此問題,但您可以通過打開動態鏈接域上託管的assetlinks.json
文件來檢查這一點:https://YOUR_DOMAIN/.well-known/assetlinks.json
應包含所有 Firebase 應用程序的包名稱。動態鏈接現在將直接發送到您的應用程序。您將能夠通過在添加了 App Links Intent 過濾器的 Activity 中調用
getDynamicLink()
來獲取深層鏈接和其他動態鏈接數據(如處理深層鏈接中所述)。注意:由於通過應用鏈接調用會將用戶直接帶到應用,因此動態鏈接無法滿足所需的最低版本。因此,應用打開後,您需要將動態鏈接的最低版本 ( getminimumappversion ) 與PackageInfo.versionCode進行比較,並在需要時使用getUpdateAppIntent重定向用戶升級應用。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2023-05-31 (世界標準時間)。
[] []