本頁面由 Cloud Translation API 翻譯而成。
Switch to English

在Android上接收Firebase動態鏈接

要接收您創建的Firebase動態鏈接,您必須在應用程序中包含Dynamic Links SDK,並在應用程序加載時調用FirebaseDynamicLinks.getDynamicLink()方法以獲取在動態鏈接中傳遞的數據。

  1. 如果尚未將Firebase添加到您的Android項目中

    註冊應用程序時,請指定SHA-1簽名密鑰。如果您使用應用程序鏈接,還請指定您的SHA-256密鑰。

  2. 在項目級別的build.gradle文件中,確保在buildscriptallprojects部分中都包含Google的Maven存儲庫。
  3. 將Dynamic Links Android庫的依賴項添加到模塊(應用程序級)Gradle文件(通常是app/build.gradle )中。

    為了獲得最佳的動態鏈接體驗,我們建議您在項目中啟用Google Analytics(分析) 。另外,作為設置Google Analytics(分析)的一部分,您需要將Firebase SDK for Analytics添加到您的應用中。

    爪哇

    implementation 'com.google.firebase:firebase-dynamic-links:19.1.0'
    implementation 'com.google.firebase:firebase-analytics:17.4.4'

    Kotlin + KTX

    implementation 'com.google.firebase:firebase-dynamic-links-ktx:19.1.0'
    implementation 'com.google.firebase:firebase-analytics-ktx:17.4.4'
  4. Firebase控制台中 ,打開“ 動態鏈接”部分。如果系統提示您接受服務條款,請接受。

普通的深層鏈接一樣 ,您必須向處理應用程序深層鏈接的活動中添加一個新的意圖過濾器。意圖過濾器應捕獲您域的深層鏈接,因為如果安裝了應用程序,則動態鏈接將重定向到您的域。從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()方法:

爪哇

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 + KTX

Firebase.dynamicLinks
        .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()檢索鏈接並清除該數據,因此該數據僅由您的應用處理一次。

通常,您可以在主要活動以及由與鏈接匹配的意圖過濾器啟動的任何活動中調用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()

在Android 6.0(API級別23)及更高版本上,您可以使用Android應用鏈接將應用設置為直接在安裝了應用後直接處理動態鏈接

確保已將應用程序的SHA256證書指紋添加到Firebase控制台中的項目中。動態鏈接將為您的動態鏈接域設置App 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必須設置為您的動態鏈接域,而不是深層鏈接域。

必須註冊清單中的所有autoVerify意向過濾器,才能使應用程序鏈接autoVerify 。 Firebase會為您的Dynamic Links域自動處理此問題,但您可以通過打開Dynamic Links域上託管的assetlinks.json文件來進行檢查:

https:// YOUR_DOMAIN /.well-known/assetlinks.json
您的所有Firebase應用程序的軟件包名稱都應包括在內。

動態鏈接現在將直接發送到您的應用程序。通過在添加了App Links意向過濾器的Activity中調用getDynamicLink() ,您將能夠獲取深層鏈接和其他動態鏈接數據(如處理深層鏈接中所述 )。