為 Dynamic Links 設定自訂網域

使用自己的網域 (而非 page.link 子網域) 可進一步控管Dynamic Links品牌。使用自訂網域時,您可以建立如下列範例的 Dynamic Links

https://example.com/link-suffix
https://example.com/links/promos/link-suffix
https://links.example.com/link-suffix
https://ex.amp.le/link-suffix

link-suffix 前的網址部分稱為「網址前置字元」,包含自訂 Dynamic Link 網域和路徑前置字元。建立 Dynamic Links 時,您需要提供網址前置字元。

如要設定自訂網域,您必須具備 Firebase 專案的編輯者或擁有者權限。

使用網域進行 Dynamic Links 驗證

您可以為 Dynamic Links、網頁、通用連結和應用程式連結使用相同網域,但如果這麼做,請務必確保 Dynamic Link 網址不會與網頁網址衝突。設定 Dynamic Links 使用特定網址前置字元時,以該前置字元開頭的所有網址都會視為 Dynamic Links,因此您無法使用這類網址指向一般代管內容。

舉例來說,如要建立資源 (網頁、通用連結或應用程式連結) 的 Dynamic Link,就不能使用 https://example.com/ 做為 Dynamic Links 網址前置字元,否則系統會將 https://example.com/my-resource 視為 Dynamic Linkhttps://example.com/my-resource請改用網址前置字串,並搭配其他網域或路徑前置字串。

因此,下列長網址 Dynamic Links (和對應的短連結) 無法正常運作,因為 link 參數指定的網址是以 Dynamic Link 網址前置字元 https://example.com/ 開頭:

 https://example.com/?link=https://example.com/my-resource
 https://example.com/?link=https://example.com/resources/my-resource

但下列長網址 Dynamic Links (和對應的短連結) 則可正常運作,因為網址前置字元不會與 link 網址衝突:

 https://link.example.com/?link=https://example.com/my-resource
 https://example.com/links/?link=https://example.com/my-resource
 https://ex.amp.le/?link=https://example.com/my-resource

Firebase 控制台中設定自訂網域

您通常可以在 Firebase 控制台中完成自訂網域設定。如要這麼做,請按照下列步驟操作:

  1. 如果尚未為專案設定 Firebase Hosting,請開啟 Firebase 控制台的「Hosting」頁面,按一下「開始使用」,然後按照設定說明操作。您目前不必完成這些步驟。

  2. 開啟 Firebase 控制台的「Dynamic Links」頁面

  3. 如果尚未用過 Dynamic Links,請按一下「開始使用」。如果沒有,請按一下下拉式選單中的「新增網址前置字元」

    然後完成設定精靈,並在系統提示時指定要使用的網域和路徑前置字元。

    中使用路徑前置字元 (例如 example.com/links) 或子網域 (links.example.com/)。
  4. 僅限 iOS:在 Xcode 專案的 Info.plist 檔案中,建立名為 FirebaseDynamicLinksCustomDomains 的金鑰,並將其設為應用程式的 Dynamic Links 網址前置字元。例如:

    <key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com/link</string>
      <string>https://example.com/promos</string>
    </array>
    

手動設定自訂網域

在某些情況下,例如您已為 Dynamic Links 設定自訂網域,並想新增其他網域,或是您要新增的網域已連結至 Hosting 網站,您就必須手動設定自訂網域。

方法如下:

  1. 如果尚未將網域連線至 Firebase Hosting,請先完成這項作業。

    使用 Firebase Hosting 設定網域時,請在本地專案目錄中建立設定檔 firebase.json

  2. 更新至最新版 Firebase CLI (6.5.0 以上版本)。

  3. 在專案的 firebase.json 檔案中,為 Dynamic Links 設定 Hosting 網站。如果專案有多個網站,請務必設定要使用的網域所連結的網站。

    • appAssociation 設為 AUTO。啟用這項設定後,Hosting 會在收到要求時動態產生 assetlinks.jsonapple-app-site-association 檔案。

    • dynamicLinks 設為 true,藉此設定重新編寫規則,指定要用於 Dynamic Links 的路徑前置字元。對這些路徑的要求會轉送至 Dynamic Links

      與將路徑重新編寫為網址的規則不同,Dynamic Link 重新編寫規則不得包含規則運算式。

      如果網站有多個重寫規則,請注意,Hosting 會執行與要求相符的第一個重寫規則。

    例如:

    "hosting": {
      // ...
      "appAssociation": "AUTO",
      "rewrites": [
        {
          "source": "/promos/**",
          "dynamicLinks": true
        },
        {
          "source": "/links/share/**",
          "dynamicLinks": true
        }
      ]
    }
    

    完成上述設定後,您可以使用下列範例中的網址前置字元建立 Dynamic Links

    https://your-domain/promos/link-suffix
    https://your-domain/links/share/link-suffix
    

    如果您只將這個網域用於 Dynamic Links,可以使用 /** 的來源路徑建立沒有路徑前置字元的 Dynamic Links/**

    {
      "source": "/**",
      "dynamicLinks": true
    }
    

    使用上述規則,您可以建立類似下列範例的 Dynamic Links

    https://your-domain/link-suffix

  4. 部署 Hosting 設定變更:

    firebase deploy --only hosting

    (選用) 您可以使用 Hosting REST API 檢查已部署的 firebase.json 內容。

  5. 僅限 iOS:在 Xcode 專案的 Info.plist 檔案中,建立名為 FirebaseDynamicLinksCustomDomains 的金鑰,並將其設為應用程式的 Dynamic Links 網址前置字元。例如:

    <key>FirebaseDynamicLinksCustomDomains</key>
    <array>
      <string>https://example.com/promos</string>
      <string>https://example.com/links/share</string>
    </array>
    

Dynamic Links」和「Hosting」的優先順序

請特別注意 Dynamic Links主機優先順序

  • 確認 Dynamic Links URL 前置字元不會與優先順序較高的代管設定衝突 (例如,代管的靜態內容一律優先於重寫)。
  • rewrites 屬性中,Hosting 回應會遵守第一個擷取所要求路徑的 source glob 所指定的規則

舉例來說,如果您為 Dynamic Link 設定 your-domain/source-path/link-suffix,但 your-domain/source-path/index.html 也有靜態內容,系統會優先處理靜態內容。使用者會看到 index.html,而不是 Dynamic Link。同樣地,如果 your-domain/source-path/link-suffix 含有靜態內容,使用者會看到靜態內容,而不是 Dynamic Link

如要為 Dynamic LinksHosting 使用相同的品牌宣傳,請考慮為 Dynamic Links 網址前置字串採用下列其中一個選項:

  • 設定 source 屬性,以比對路徑前置字串。舉例來說,如果您的自訂網域是 example.com,重寫規則可能如下:

    // Domain is example.com
    "rewrites": [ {
      "source": "/links/**",  // Dynamic Links start with "https://example.com/links/"
      "dynamicLinks": true
    } ]
    
  • 設定要用於 Dynamic Links 的子網域,然後設定 source 屬性來比對該子網域。舉例來說,如果子網域為 links.example.com,重寫規則可能如下:

    // Domain is links.example.com
    "rewrites": [ {
      "source": "/**",  // Dynamic Links start with "https://links.example.com/"
      "dynamicLinks": true
    } ]