[英]Firebase dynamic links with custom domain
我在多個 iOS 應用程序中集成了 Firebase 動態鏈接,這些應用程序位於同一個 Firebase 項目中,並且運行良好。 但是當我在同一設備上安裝兩個應用程序時,動態鏈接沒有打開設備上的特定應用程序。 因此,我在根目錄中使用自定義 apple-app-site-association 向 firebase 注冊了一個自定義子域。 但我仍然有同樣的問題。 我想生成短動態鏈接,如
https://apps.mybrand.co.id/partner/xXXx
公用文件夾中的文件
蘋果應用程序站點關聯
{
"applinks": {
"apps": [],
"details": [
{
"appID": "XXXXX.com.XXXX.Customer",
"paths":[ "/customer/", "/brand/"]
},
{
"appID": "XXXXX.com.XXXX.Partner",
"paths": ["/partner/"]
}
]
}
}
Firebase.json
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"appAssociation": "AUTO",
"rewrites": [
{
"source": "/**",
"dynamicLinks": true
}
],
"headers": [
{
"source": "apple-app-site-association",
"headers": [{"key": "Content-Type", "value": "application/json"}]
}
]
}
}
我正在使用以下代碼生成鏈接
//在firebase上注冊的自定義域 let dynamicLink = "apps.mybrand.co.id"
//create link url components
var urlComponents = URLComponents()
urlComponents.scheme = "https"
urlComponents.host = dynamicLink
urlComponents.path = "/data"
let queryItem = URLQueryItem(name: "myBrandReferCode", value: "60C38A")
urlComponents.queryItems = [queryItem]
// get the url from url component
guard let linkParameter = urlComponents.url else {
return
}
//print the url string for debugging
print("I am sharing \(linkParameter.absoluteString)")
// create dynamic link components with custom domain
guard let shareLink = DynamicLinkComponents.init(link: linkParameter, domainURIPrefix: "https://apps.mybrand.co.id/partner") else {
print("Unable to create FDL component.")
return
}
shareLink.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.ranosys.DFM-BM")
//temporary app id of another app, same in firebase console app settings
shareLink.iOSParameters?.appStoreID = "359085099"
//call shorten method to get short dynamic link
shareLink.shorten { (shortURL, warnings, error) in
for warning in warnings ?? [String]() {
print(warning)
}
//remove wait view from the button
self.shareCodeButton.removeWaitView()
//if there is any error, print it
if let error = error {
print(error.localizedDescription)
return
}
//if dynamic link is successfully shortened
if let shortLink = shortURL {
//show the activity controller
self.showActivityCoontroller(shortLink)
}
}
但是我收到The operation couldn't be completed. Your project does not own Dynamic Links domain: https://apps.mybrand.co.id
錯誤The operation couldn't be completed. Your project does not own Dynamic Links domain: https://apps.mybrand.co.id
The operation couldn't be completed. Your project does not own Dynamic Links domain: https://apps.mybrand.co.id
不確定這是否會幫助任何人,但我有類似的問題。 我想設置我自己的域以用作無密碼身份驗證的動態鏈接,而不是默認情況下可以使用的 appname.page.link 動態鏈接域。 相反,我想使用 myowndomain.com/DynamicLinks。
要以這種方式將動態鏈接與 Firebase 結合使用,您必須將域的控制權交給 Firebase,后者將在域的根目錄中為您生成 JSON apple-app-site-association 文件。 如果您想在此域上托管頁面,則需要使用 firebase 托管。 換句話說,要使域使用與 Firebase 的動態鏈接,該域必須由 Firebase 控制,方法是創建必要的關聯 DNS 記錄以指向其服務器。
創建一個指向 Firebase 的子域可能更好,這樣您就可以將自己的主機用於主域。 即 yourdomain.com -> 定向到您的服務器主機 dynamiclinkssubdomain.yourdomain.com -> 定向到 Firebase
確保在項目設置下正確設置了正確的 AppID、BundleID、StoreID 和 TeamID。
但這就是我感到沮喪的地方:我按預期做了所有事情,但仍然沒有奏效。 我聯系了 Apple 支持,他們說 apple-app-site-association 需要時間來傳播。 結果證明花了大約36個小時。 現在完美運行。 還發現該文件是在根目錄中創建的,因此您的 actionCodeSettings.dynamicLinkDomain 需要指向根目錄而不是您配置的動態鏈接前綴目錄。
希望這可以幫助某人。 花了大約 4 天的時間找出動態鏈接!
考慮嘗試以下兩個修復程序:
apple-app-site-association
文件應該在.well-known
目錄下(注意點)。index.html
文件。 此文件可能會干擾自定義域驗證編輯:您可以在域驗證成功后重新添加index.html
文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.