您可以使用自己的網域 (而非 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 之前的部分稱為「網址前置字串」,內含您的自訂動態連結網域和路徑前置字串。您必須在建立動態連結時提供網址前置字串。
如要設定自訂網域,您必須具備 Firebase 專案的「編輯者」或「擁有者」權限。
將您的網站網域用於 Dynamic Links
您可以針對動態連結和網頁、通用連結和應用程式連結使用相同的網域,但如果您要這麼做,請務必注意動態連結網址不會與網址發生衝突。當您設定動態連結使用特定網址前置字元時,系統會將開頭為該前置字串的所有網址視為動態連結,因此就無法使用含有該前置字串的網址指向一般代管內容。
舉例來說,如果您想為 https://example.com/my-resource
資源 (網頁、通用連結或應用程式連結) 建立動態連結,就不能使用 https://example.com/
做為 Dynamic Links 網址前置字元,因為這麼做會導致系統將 https://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 控制台中完全設定自訂網域。方法如下:
如果您尚未為專案設定 Firebase 託管,請開啟 Firebase 控制台的「託管」頁面,按一下「開始使用」,並按設定指示操作。您目前不必完成指示的步驟。
如果您未曾使用過 Dynamic Links,請按一下「開始使用」。否則,請在下拉式選單中按一下「Add URLprefix」(新增網址前置字串)。
接著,完成設定精靈,在系統提示時指定要使用的網域和路徑前置字串。
僅限 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 設定了自訂網域,而您想要新增其他網域),或是新增已連結至託管網站的網域時,必須手動設定自訂網域。
方法如下:
如果您尚未將網域連結至 Firebase 託管,請先執行這項操作。
使用 Firebase 託管設定網域包括在本機專案目錄中建立設定檔
firebase.json
。更新至最新版 Firebase CLI (6.5.0 以上版本)。
在專案的
firebase.json
檔案中設定「託管」網站以使用 Dynamic Links。如果您的專案有多個網站,請務必設定連結至您要使用的網域的網站。將
appAssociation
設為AUTO
。有了這項設定,託管會在收到要求時動態產生assetlinks.json
和apple-app-site-association
檔案。將重寫規則的
dynamicLinks
設為true
,以指定要用於 Dynamic Links 的路徑前置字串。系統會將傳送至這些路徑的要求 經由 Proxy 傳送至 Dynamic Links動態連結重寫規則與重寫網址路徑的規則不同,不能包含規則運算式。
請注意,如果網站有多個重寫規則,主機會執行符合要求的第一個重寫規則。
例如:
"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
部署託管設定變更:
firebase deploy --only hosting
(選用) 您可以使用 Hosting REST API 檢查已部署的
firebase.json
內容。僅限 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 和託管的優先順序
針對 Dynamic Links,請特別留意代管優先順序。
- 確保 Dynamic Links 網址的前置字串不會與優先順序較高的託管設定發生衝突 (例如,代管的靜態內容一律優先於重寫)。
- 在
rewrites
屬性中,託管回應會遵循第一個擷取要求路徑的source
glob 指定的規則。
舉例來說,如果您為 your-domain/source-path/link-suffix
設定了動態連結,但 your-domain/source-path/index.html
中有靜態內容,則系統會優先採用靜態內容。使用者看到的是 index.html
,而非動態連結。同樣地,如果您在 your-domain/source-path/link-suffix
有靜態內容,使用者會看到靜態內容,而非動態連結。
如果您想在 Dynamic Links 和「託管」中使用相同的品牌宣傳元素,請考慮採用下列其中一種方式來設定 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 } ]