Catch up on everthing we announced at this year's Firebase Summit. Learn more

在 Android 上接收 Firebase 動態鏈接

要接收火力地堡的動態鏈接,您創建,必須包括動態鏈接SDK在您的應用程序並調用FirebaseDynamicLinks.getDynamicLink()方法時,你的應用程序加載到獲得動態鏈接傳遞的數據。

  1. 如果你還沒有,添加火力地堡到您的Android項目

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

  2. 使用火力地堡Android的物料清單,聲明你的模塊(應用程序級)搖籃文件(通常為動態鏈接庫的Android的依賴app/build.gradle )。

    對於動態鏈接的最佳體驗,我們建議讓谷歌Analytics(分析)在您的火力地堡項目,並添加火力地堡SDK為谷歌Analytics(分析)應用程式。

    爪哇

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

    通過使用火力地堡Android的物料清單,您的應用程序將始終使用火力地堡的Android庫的兼容版本。

    (替代)聲明火力地堡庫依賴使用物料清單

    如果您選擇不使用 Firebase BoM,則必須在其依賴項行中指定每個 Firebase 庫版本。

    需要注意的是,如果你在你的應用程序使用多個火力地堡庫,我們強烈建議您使用的物料清單管理庫版本,以保證所有版本相互兼容。

    dependencies {
        // Declare 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.0.0'
        implementation 'com.google.firebase:firebase-analytics:20.0.0'
    }
    

    科特林+KTX

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

    通過使用火力地堡Android的物料清單,您的應用程序將始終使用火力地堡的Android庫的兼容版本。

    (替代)聲明火力地堡庫依賴使用物料清單

    如果您選擇不使用 Firebase BoM,則必須在其依賴項行中指定每個 Firebase 庫版本。

    需要注意的是,如果你在你的應用程序使用多個火力地堡庫,我們強烈建議您使用的物料清單管理庫版本,以保證所有版本相互兼容。

    dependencies {
        // Declare 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.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:20.0.0'
    }
    
  3. 火力地堡控制台,打開動態鏈接部分。如果系統提示您接受服務條款,請接受。

平原深層鏈接,必須將新的意圖過濾器添加到處理您的應用深層鏈接的活動。 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()方法:

爪哇

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);
            }
        });

科特林+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搖籃插件。
    • 包括google-services.json配置文件在您的應用程序。
    • 呼叫FirebaseAnalytics.getInstance()調用之前FirebaseDynamicLinks.getDynamicLink()

在Android 6.0(API級別23)和更高,你可以設置你的應用程序來處理動態鏈接直接當你的應用已經通過使用安裝Android應用程序鏈接

確保您已為應用程式新增了SHA256證書指紋到在你的項目中火力地堡控制台。動態鏈接將為您的動態鏈接域設置應用鏈接網站關聯。

自動驗證意圖過濾器添加到要處理動態鏈接的活動,設置主機到項目的動態鏈接域在火力地堡控制台發現。在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在清單的意圖過濾器必須按順序為App鏈接從事註冊。火力地堡手柄自動為您的動態鏈接域,但你可以通過打開檢查該assetlinks.json文件託管在您的動態鏈接域名:

https://YOUR_DOMAIN/.well-known/assetlinks.json
你的火力點應用的“包名的所有應包括在內。

動態鏈接現在將直接發送到您的應用。您將能夠通過調用獲得深層鏈接和其他動態鏈接數據getDynamicLink()在活動添加的應用程序鏈接的意圖過濾器(如在描述把手深層鏈接)。

注:由於調用通過應用鏈接直接將用戶到應用程序,動態鏈接無法兌現所需的最低版本。因此,一旦應用程序打開時,你需要比較的動態鏈接的最低版本( getminimumappversion )對PackageInfo.versionCode和重定向用戶是否使用需要升級應用getUpdateAppIntent