如何以编程方式(iOS)创建 Firebase 动态链接?

Posted

技术标签:

【中文标题】如何以编程方式(iOS)创建 Firebase 动态链接?【英文标题】:How to create a Firebase Dynamic Link programmatically (iOS)? 【发布时间】:2018-01-04 10:45:09 【问题描述】:

我通读了所有可用的文档并试用了 Firebase 示例代码,但似乎没有任何效果。

我已经通过控制台设置了一个动态链接,效果很好。

谁能解释我如何创建最基本的动态链接,以便用户可以例如可以发送直接指向他的个人资料的链接吗?最少需要哪些组件?

(如果有人可以在 Objective-C 中发布基本代码,那就太好了)

【问题讨论】:

我发布了一个答案,希望对您和其他人有所帮助。 【参考方案1】:

此页面对您有帮助吗https://firebase.google.com/docs/dynamic-links/ios/create? 你可以在https://github.com/firebase/quickstart-ios/tree/master/dynamiclinks找到示例代码

【讨论】:

【参考方案2】:

我假设您想发送一些键值对,也就是 URL 正文中的字典。 这是编写它的方法Convert dictionary to query string in swift?。 因此,第一步是创建该 URL。 接下来,您可以手动编写您的 Firebase 动态链接https://firebase.google.com/docs/dynamic-links/create-manually 你也可以在https://firebase.googleblog.com/2017/06/making-dynamic-links-easier.html找到一个小教程

 @IBAction func createGroupAction(_ sender: Any) 

    let dynamicLinkDomain = "a5481.app.goo.gl"  // <- don't add https scheme to this string
    let appBundleID = "com.vividapartments.myStr.com"

    let params:[String : String] = [
        "ibi": appBundleID,
        "isi": "1222420082",
        "efr":"1",
        "groupID":"-LDSfWKKbWjyrXiFljT3",
        "chatID":"-LDSfWKMbm9mSE2a6EIe"
    ]

    // general link params
    let urlParams = params.flatMap ( (key,value) -> String in
        return "\(key)=\(value)"
    ).joined(separator: "&")


    guard let deepLink = URL(string:"https://www.mystr.com/groups?\(urlParams)") else return

    print("deepLink is \(deepLink)")
    //prints:
    //deepLink is https://www.mystr.com/groups?isi=1222420082&chatID=-LDSfWKMbm9mSE2a6EIe&efr=1&ibi=com.vividapartments.myStr.com&groupID=-LDSfWKKbWjyrXiFljT3

    let components = DynamicLinkComponents(link: deepLink, domain: dynamicLinkDomain)

    let iOSParams = DynamicLinkIOSParameters(bundleID: appBundleID)
    iOSParams.minimumAppVersion = "1.5"
    components.iOSParameters = iOSParams

    //1. Build the dynamic long link
    let longlLink = components.url
    print("The long link is \(longlLink!)")
    //prints:
     //The long link is https://a5481.app.goo.gl/?link=https%3A%2F%2Fwww%2Emystr%2Ecom%2Fgroups%3Fisi%3D1222420082%26chatID%3D%2DLDSfWKMbm9mSE2a6EIe%26efr%3D1%26ibi%3Dcom%2Evividapartments%2EmyStr%2Ecom%26groupID%3D%2DLDSfWKKbWjyrXiFljT3&ibi=com%2Evividapartments%2EmyStr%2Ecom&imv=1%2E5

    //Set the length of a short Dynamic Link
    let options = DynamicLinkComponentsOptions()
    options.pathLength = .unguessable
    components.options = options

    //2. Or create a shortened dynamic link
    components.shorten  (shortURL, warnings, error) in
        if let error = error 
            print("error is \(error.localizedDescription)")
            return
        

        // TODO: Handle shortURL.
        print("shortURL is \(String(describing: shortURL))")
    




【讨论】:

【参考方案3】:

以下代码 100% 为我工作。请尝试一次。

 guard let link = URL(string: "Write your link here and parameters") else  return 
    let dynamicLinksDomainURIPrefix = "https://racematesios.page.link" //domain-link
    let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPrefix )

    linkBuilder!.iOSParameters = DynamicLinkIOSParameters(bundleID: "Bundle ID")
    linkBuilder!.iOSParameters?.appStoreID = "App store ID"

    guard let longDynamicLink = linkBuilder?.url else  return 
    print("The long URL is: \(longDynamicLink)")

请交叉检查相关域:(它不能包含 http 或 https,例如 applinks:myapp.page.link)。动态链接在 iOS 模拟器上很容易工作,我没有遇到任何问题。

【讨论】:

如果您发现任何问题,请告诉我。

以上是关于如何以编程方式(iOS)创建 Firebase 动态链接?的主要内容,如果未能解决你的问题,请参考以下文章

能否以编程方式从 ios 应用端访问 bigquery 或 Firebase 分析数据?

如何以编程方式在 Firebase 中创建动态链接?迅速

如何以编程方式获取 Firebase 中的注册用户列表 [重复]

如果应用程序未以编程方式安装 firebase 动态链接,则重定向到 iOS App Store

如何通过firebase-tools库创建新的firebase站点

如何以编程方式查询 Firebase 转换数据 [关闭]