簡體   English   中英

具有自定義域的 Firebase 動態鏈接

[英]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 天的時間找出動態鏈接!

考慮嘗試以下兩個修復程序:

  1. apple-app-site-association文件應該在.well-known目錄下(注意點)。
  2. 從您的主機中刪除index.html文件。 此文件可能會干擾自定義域驗證

編輯:您可以在域驗證成功后重新添加index.html文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM