你可以進一步控管 Dynamic Links同時使用自己的圖像和
網域,而不是 page.link
子網域。自訂網域可讓你建立
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/my-resource
(網頁、通用連結或應用程式連結),您
無法使用 https://example.com/
做為 Dynamic Links 網址前置字元,因為這麼做
會導致系統將 https://example.com/my-resource
視為 Dynamic Link。
請改用包含其他網域或不同網域的網址前置字元
路徑前置字串
因此,下列長篇影片 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 控制台設定完整的自訂網域。目的地: 方法如下:
如果您尚未為專案設定 Firebase Hosting,請開啟 Firebase 控制台的 Hosting 頁面,按一下 開始使用,然後完成設定步驟。您不一定要 請完成這個指定步驟
開啟 Firebase 控制台的 Dynamic Links 頁面。
如果您未曾使用過 Dynamic Links,請按一下「開始使用」。否則,請按一下 在下拉式選單中新增網址前置字元。
接著完成設定精靈,指定網域和路徑前置字串 並要求系統顯示提示時
Dynamic Links僅限 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 網站,您必須手動設定自訂網域。
方法如下:
將網域連結至 Firebase Hosting 如果尚未建立
使用 Firebase Hosting 設定網域包括建立 設定檔
firebase.json
複製到本機專案目錄將 Firebase CLI 更新至最新版本 (6.5.0 以上版本)。
在專案的「Dynamic Links」中設定 Hosting 網站
firebase.json
檔案。如果您的專案有多個網站,請務必 設定已連結到您想使用網域的網站。將
appAssociation
設為AUTO
。使用這項設定時,Hosting 動態產生assetlinks.json
和apple-app-site-association
檔案。設定重寫功能,指定 Dynamic Links 要使用的路徑前置字串
dynamicLinks
設為true
的規則。傳送至這些路徑的要求會取得 已代理到 Dynamic Links。與重寫網址路徑的規則不同,Dynamic Link 重寫規則無法 包含規則運算式。
如果網站有多個重新寫入規則,請注意, Hosting 會執行符合要求的第一個重寫規則。
例如:
"hosting": { // ... "appAssociation": "AUTO", "rewrites": [ { "source": "/promos/**", "dynamicLinks": true }, { "source": "/links/share/**", "dynamicLinks": true } ] }
透過上述設定,您可以使用網址前置字元建立 Dynamic Links,例如: 下列範例:
Dynamic Linkshttps://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
部署 Hosting 設定變更:
firebase deploy --only hosting
(選用) 您可以使用
firebase.json
Hosting REST API。僅限 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 網址前置字元不會與高優先順序衝突 代管設定 (例如,代管的靜態內容一律優先採用) 覆寫重寫)。
- 在
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 Links 和 Hosting 使用相同的品牌宣傳元素,可以考慮 以下其中一個 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 } ]