從 Dynamic Links 遷移至應用程式連結 &

本遷移指南著重於如何使用 應用程式連結通用連結, 視需要使用 Firebase 託管來代管您的應用程式網站關聯檔案。

這項遷移作業取代了下列 Firebase Dynamic Links 功能:

功能 Firebase Dynamic Links 應用程式連結 / 通用連結
使用者只要點擊一下,就能引導他們前往適合自己的裝置商店
在使用者下載並下載 使用延遲深層連結安裝應用程式
透過以下應用程式的深層連結內容,提供使用者情境體驗: 您的應用程式 (已安裝)
提供與動態連結點擊事件相關的數據分析資料
提供建立短連結網址的功能

如果遷移時仍需要其他 Firebase Dynamic Links 功能 不支援,請參閱本指南中的其他遷移情境。 動態連結淘汰常見問題 說明文件。

假設您有一個如下所示的 Firebase 動態連結:

動態連結範例
連結名稱 歡迎使用 Example.com
深層連結 https://example.web.app/welcome
Android 應用程式 com.example.android
Apple 應用程式 com.example.ios
完整動態連結 https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
簡短動態連結 https://example.page.link/m9Mm

本遷移指南的目標在於取代類似下方的 Firebase Dynamic Links:

https://example.page.link/m9Mm

使用應用程式連結 / 通用連結深層連結時,看起來會像這樣:

https://your-project-domain.web.app/welcome

請注意,「應用程式連結 / 通用連結」深層連結會提供 將使用者一併提供給他們:

  • 使用者可點擊的深層連結,在已安裝應用程式的情況下開啟您的應用程式
  • 接續使用者歷程,將他們帶往特定部分 並在應用程式開啟後顯示

但是,應用程式連結 / 通用連結深層連結不會提供下列功能: 使用者的行為 (Firebase Dynamic Links 先前的運作方式):

  • 將使用者導向正確的裝置商店,方便他們下載 安裝這個應用程式
  • 接續使用者下載後的歷程 首次安裝及開啟應用程式

留意這類應用程式的行為和功能有何不同 連結 / 通用連結與呼叫的 Firebase Dynamic Links 差異 。

事前準備

Firebase Dynamic Links 會使用應用程式連結 (Android) 和通用連結 ( iOS),才能提供深層連結 功能。

本指南將逐步說明如何自行建立應用程式連結和通用連結 並使用 Firebase 託管,取代先前 Firebase Dynamic Links,同時將 Firebase Dynamic Links 遷移至新連結 應用程式連結 / 通用連結遷移解決方案。

您需要以下資訊,才能完成 遷移:

  • 要遷移的 Firebase Dynamic Links
  • 動態連結內含的深層連結網址參數
  • 打算用來取代舊有 Firebase 動態的網域 連結網域 (如果有的話)

您可以參閱匯出動態連結中繼資料指南 匯出現有的連結中繼資料 取得上述資訊。

遷移步驟總覽

  1. 佈建新網域 (如果您還沒有要使用的網域) 使用 Firebase 代管您的應用程式連結 / 通用連結設定檔 託管。

  2. 在以下位置建立及代管應用程式連結 / 通用連結設定檔: 存取 Cookie

  3. 建立符合深層連結結構定義的新應用程式連結 / 通用連結 用於 Firebase Dynamic Links 中的運作方式

  4. 請更新 Android / iOS 應用程式和應用程式的程式碼,以便接收深層連結。

  5. 測試應用程式連結 / 通用連結整合。

  6. 以應用程式連結取代已發布或共用的 Firebase Dynamic Links 以及通用連結

第一步 應用程式連結和通用連結遷移流程都很常見。 會視平台而定,請前往 視您想先遷移的平台而定。

選擇網域

第一步是選擇要用於應用程式連結的網域。 通用連結:這會成為新連結將使用的網域 並提供給使用者

如果您使用 Firebase 代管, 且格式為 your-project-domain.web.appyour-project-domain.firebaseapp.com 會自動免費佈建。個人中心 可選擇使用自訂網域 (無論是否有 Firebase 託管) 託管 應用程式連結 / 通用連結設定檔。

設定 Firebase 託管

接下來,您需要 設定及設定 Firebase 託管執行個體

完成設定 Firebase 託管執行個體之後 類似 your-project-domain.web.app`,或 自訂網域

如要使用應用程式連結,您必須託管設定檔 確保連結中所使用的網域和 應用程式。對應用程式連結而言,這是指 assetlinks.json 檔案。

建立及代管 assetlinks.json 檔案的步驟

我們可以透過 assetlinks.json 檔案提供獲得授權的應用程式清單 可以處理應用程式連結要使用的網域內容。 assetlinks.json 檔案本身需要託管於網域網域的根目錄 路徑下:/.well-known

請按照下列步驟完成這項設定:

  1. 在以下項目的公用資料夾中建立 .well-known 資料夾: Firebase 託管根目錄。

  2. .well-known 資料夾中建立名為 assetlinks.json 的檔案。

  3. 將下列內容複製到 assetlinks.json 檔案中,並記下 各欄位的意義:

    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target": {
        "namespace": "android_app",
        "package_name": "com.example.android",
        "sha256_cert_fingerprints":
          ["01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF"]
      }
    }]
    
    • namespace - 指的是您要提供的應用程式名稱
    • package_name - 是指在應用程式的 build.gradle 個檔案
    • sha256_cert_fingerprints:代表 您用於簽署應用程式的 KeyStore 檔案。

    您可以使用 Android Studio 使用的 debug.keystore 檔案產生 sha256_cert_fingerprints 記錄以偵錯。您可以在 /Users/<username>/.android/debug.keystore 檔案 (Mac 和 Linux 上) C:\Users\<username>\.android\debug.keystore (Windows)。

    您可以從這個 KeyStore 使用 Keytool 擷取 SHA256 值。

    詳情請參閱 本節的應用程式連結說明文件 查看更多完成此步驟的指示。

    您也可以使用 應用程式連結小幫手 ,以產生 assetlinks.json 檔案內容 設定應用程式以處理應用程式連結。

  4. 請更新 firebase.json 檔案,為要代管的檔案建立索引。

    "headers": [
      {
        "source": "/.well-known/assetlinks.json",
        "headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    ]
    
  5. 現在我們已設定好 assetlinks.json 檔案,請執行 firebase deploy 以 並代管變更

    請注意,您必須具備 Firebase CLI ,以便執行上述的 Deployment 指令。

    firebase deploy --only hosting
    
  6. 請前往 https://your-project-domain.web.app/.well-known/assetlinks.json

在這個步驟中,您將重新建立 Firebase 動態連結中的深層連結 使用一般深層連結網址,與您為應用程式建立的新網域相符 連結。

舉例來說,假設您擁有下列 Firebase 動態連結:

動態連結範例
連結名稱 歡迎使用 Example.com
深層連結 https://example.web.app/welcome
Android 應用程式 com.example.android
Apple 應用程式 com.example.ios
完整動態連結 https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
簡短動態連結 https://example.page.link/m9Mm

在此情況下,我們會擷取深層連結參數,也就是 https://example.web.app/welcome,並將此做為應用程式連結 參數。

請為每個要連結的 Firebase 動態連結重複執行這項程序 改用應用程式連結 / 通用連結,並複製深層連結 結構定義

例如,請參閱下列 Firebase Dynamic Links 短連結、深層連結參數和遷移的深層連結值:

短連結 深層連結參數 已遷移的深層連結
yourapp.page.link/welcome https://example.com/welcome yourapp.web.app/welcome
您的 app.page.link/c7sn https://example.com/main/?p=23&t=1 yourapp.web.app/main/?p=23&t=1
您的 app.page.link/social https://example.com/friendinvite/?add=1 yourapp.web.app/friendinvite/?add=1

接下來,您必須替換含有 已發布或與新的已遷移深層連結共用,因此使用者點選 來取代先前的 Firebase Dynamic Links

選取網域和深層連結結構定義後 將 Firebase Dynamic Links 遷移至應用程式連結,即可更新 Android 應用程式 和應用程式程式碼,以便接收新的深層連結。

建議您按照 在此查看應用程式連結說明文件Android Studio 指南 瞭解如何設定應用程式以處理深層連結,但主要步驟包括:

  1. 找出應處理個別深層連結的活動
  2. 在 AndroidManifest.xml 中新增這些活動的意圖篩選器 檔案
  3. 在活動中接收深層連結應用程式程式碼

假設您想使用 MainActivity 處理部分 連結。如要執行此操作,您必須將下列意圖篩選器新增到 AndroidManifest.xml 檔案中的 MainActivity:

<activity android:name=".MainActivity"
   android:exported="true">
   <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
   <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.web.app" android:scheme="http"
           android:pathPrefix="/welcome" />
       <data android:host="example.web.app" android:scheme="https"
           android:pathPrefix="/welcome" />
   </intent-filter>
</activity>

在這個步驟中,您要指定 MainActivity 是 會處理 wxample.web.app 網域的深層連結,其中包含 /welcome 路徑前置字串。請注意,您也必須指定 android:autoVerify="true"屬性讓您將應用程式指定為 成為此指定連結類型的預設處理常式。

最後,您必須在 MainActivity 中新增程式碼,以擷取 深層連結資料,藉此改善應用程式中的深層連結體驗。這個 類似於您在整合前在應用程式中編寫程式碼的邏輯 。

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.main)

  val  data: Uri? = intent?.data

  val toast = Toast.makeText(this, data, duration)
  toast.show()
}

您可以透過下列方式測試剛剛建立的應用程式連結: 或在遠端裝置上 Android Emulator

您必須使用針對應用程式設定的網域來建立可點選的連結 然後點選該連結,確認連結可開啟至您的應用程式 會將您導向至預定的活動。

您也可以使用 應用程式連結小幫手 ,或為現有的應用程式連結網址使用下列指令 以確保能正確啟動相符活動:

adb shell am start -a android.intent.action.VIEW -d <your_deep_link_url>

遷移作業的最後一個步驟是取代已發布或共用 盡可能將 Firebase Dynamic Links 與應用程式連結搭配使用,並繼續使用 日後的應用程式連結。

完成此步驟會因您擁有 已發布 Firebase Dynamic Links,但為了協助你追蹤有哪些 匯出現有的 Firebase Dynamic Links 中繼資料。詳情請見 匯出動態連結中繼資料指南

如要使用通用連結,您必須代管 確保連結中所使用的網域和 應用程式。如果是通用連結,則代表 apple-app-site-association 檔案 ( 簡稱 AASA 檔案)。

建立及代管 apple-app-site-關聯檔案的步驟

我們可以透過 AASA 檔案提供一份授權應用程式清單,瞭解哪些應用程式可處理 要使用的通用連結網域內容。AASA 檔案本身必須在路徑下方的網域根目錄中代管: /.well-known,

請按照下列步驟完成這項設定:

  1. 建立「.well-known」資料夾下的公用資料夾 Firebase 託管根目錄。

  2. 建立名為「apple-app-site-association」的檔案在 「.well-known」資料夾。

  3. 將下列內容複製到您的 apple-app-site-關聯檔案。 請留意下方每個欄位的意義:

    {
      "applinks": {
        "apps": [],
        "details": [
          {
            "appId": "$TEAM_ID.com.firebase.UniversalLinks",
            "paths": [
              "NOT /_/*",
              "/*"
            ]
          }
        ]
      }
    }
    
    • $TEAM_ID.BundleId - 經授權的完整應用程式名稱 處理連結
  4. 請更新 firebase.json 檔案,為要代管的檔案建立索引。

    "headers": [
      {
        "source": "/.well-known/apple-app-site-association",
        "headers": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ]
      }
    ]
    
  5. 我們已備妥 AASA 檔案,請 Firebase 部署 並輸入變更內容

  6. 前往 https://your-project-domain.web.app/.well-known/app-app-site-association

在這個步驟中,您將重新建立 Firebase 動態連結中的深層連結 一般的深層連結網址,與你為網站建立的新網域相符 通用連結:

舉例來說,假設您擁有下列 Firebase 動態連結:

動態連結範例
連結名稱 歡迎使用 Example.com
深層連結 https://example.web.app/welcome
Android 應用程式 com.example.android
Apple 應用程式 com.example.ios
完整動態連結 https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos
簡短動態連結 https://example.page.link/m9Mm

在此情況下,您可以擷取深層連結參數: 例如 https://example.web.app/welcome,現在將以通用到達網頁 應用程式的連結參數。

請為每個要連結的 Firebase 動態連結重複執行這項程序 改用應用程式連結 / 通用連結,並複製深層連結 結構定義

例如,請參閱下列 Firebase Dynamic Links 短連結、深層連結參數和遷移的深層連結值:

短連結 深層連結參數 已遷移的深層連結
yourapp.page.link/welcome https://example.com/welcome yourapp.web.app/welcome
您的 app.page.link/c7sn https://example.com/main/?p=23&t=1 yourapp.web.app/main/?p=23&t=1
您的 app.page.link/social https://example.com/friendinvite/?add=1 yourapp.web.app/friendinvite/?add=1

接下來,您必須替換含有 已發布或與新的已遷移深層連結共用,因此使用者點選 來取代先前的 Firebase Dynamic Links

選取網域和深層連結結構定義後 將 Firebase Dynamic Links 遷移至通用連結,即可更新 iOS 和應用程式程式碼,以便接收新的深層連結。

建議您按照 在此查看通用連結說明文件 瞭解如何設定應用程式以處理深層連結,但主要步驟包括:

  1. 更新專案設定,讓應用程式能處理深度作業 來自新建網域的連結

  2. 接收應用程式程式碼中的深層連結

更新專案設定,讓應用程式處理深層 連結,您必須在專案中新增其他關聯網域 至目前打算用來代管 apple-app-site-associate 檔案。

做法如下:

  1. 正在開啟 Xcode
  2. 在檔案導覽工具中選取專案
  3. 前往「簽署與專案設定的「功能」分頁
  4. 前往「關聯網域」部分
  5. 按一下 + 按鈕,將其他網域新增至 格式為「applinks:」。

最後,您必須更新應用程式程式碼,才能接收 傳入的深層連結

為此,請先更新 AppDelegate.swift 檔案以回應 透過加入下列程式碼進行通用連結:

func application(_ application: UIApplication, continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  AppDelegate.showReceivedUrl(userActivity: userActivity);
  return true
}

static func showReceivedUrl(userActivity: NSUserActivity) {
  if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
    let url = userActivity.webpageURL!
    print(url.absoluteString)
}

上述程式碼會覆寫 Universal Link 回呼方法,並記錄 連結網址 (如有)。

現在,我們要呼叫 SceneDelegate 類別中相同的 showReceivedUrl 方法 就算使用者點開應用程式後 通用連結,SceneDelegate 中的通用連結回呼會是 系統會以叫用的方式回應

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
  AppDelegate.showReceivedUrl(userActivity: userActivity)
}

您可以執行應用程式,藉此測試剛剛建立的通用連結 的 實體裝置或模擬器

您必須使用針對網域設定的網域,建立可點擊的連結 ,然後點選該連結,確認連結開啟後 並導向到應用程式的預期畫面。

支援智慧型應用程式橫幅廣告

我們強烈建議您使用 智慧型應用程式橫幅廣告 為使用者提供與 Firebase 動態相似的體驗 連結。

採用智慧型應用程式橫幅廣告後,系統會將使用者帶往應用程式的 App Store 。你也可以 視需要設定要在下載後傳入應用程式的參數 讓他們持續瀏覽歷程如果 應用程式就會開啟,並將這個參數傳入您的 引導使用者,根據智慧型應用程式 使用者點按的橫幅。

遷移作業的最後一個步驟是取代已發布或共用 Firebase Dynamic Links 並盡可能搭配通用連結使用,並繼續 之後也改用通用連結

完成此步驟會因您擁有 已發布 Firebase Dynamic Links。

為協助您追蹤要遷移的現有 Firebase Dynamic Links 發布指南,瞭解如何從 Firebase 匯出短連結中繼資料 Dynamic Links。請在我們的網站上查看 Dynamic Links 淘汰常見問題文件 即可掌握最新消息