如要接收
您建立的 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 Analytics 專用 Firebase SDK。
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.16.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.5.0' }
- 在 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
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()
從 Intent 取得,您仍須在連結可能啟動的每個活動中呼叫 getDynamicLink()
。呼叫 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
設定檔。 - 在呼叫
FirebaseDynamicLinks.getDynamicLink()
之前,請先呼叫FirebaseAnalytics.getInstance()
。
使用應用程式連結處理 Dynamic Links
在 Android 6.0 (API 級別 23) 以上版本中,如果應用程式已安裝,您可以設定應用程式直接處理 Dynamic Links,方法是使用 Android 應用程式連結。
請確認您已在 Firebase 控制台中,將應用程式的 SHA256 憑證指紋新增至專案。Dynamic Links會為您的「Dynamic Links」網域設定應用程式連結網站關聯。
將自動驗證的意圖篩選器新增至將處理 Dynamic Link 的活動,並將主機設為專案的 Dynamic Links 網域,如在 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
現在會直接傳送至您的應用程式。您可以在新增應用程式連結意圖篩選器的活動中呼叫 getDynamicLink()
,取得深層連結和其他 Dynamic Link 資料 (如「處理深層連結」一文所述)。Dynamic Links
注意:由於透過應用程式連結叫用會直接將使用者帶往應用程式,因此 Dynamic Link 無法遵守最低版本規定。因此,應用程式開啟後,您需要比較動態連結的最低版本 ( getminimumappversion) 與 PackageInfo.versionCode,並視需要使用 getUpdateAppIntent 將使用者重新導向至應用程式升級頁面。