Firebase 动态链接在 safari swift 中不起作用

Posted

技术标签:

【中文标题】Firebase 动态链接在 safari swift 中不起作用【英文标题】:Firebase dynamic link doesnt work in safari swift 【发布时间】:2017-11-21 13:32:25 【问题描述】:

我正在使用 firebase 动态链接。我面临 2 个问题 firebase 官方网站没有足够的信息并且已经在谷歌上搜索过。

(1) 当我以编程方式创建链接时它在 safari 上不起作用。但如果我复制链接并在 chrome 或其他浏览器中打开它,它就像魅力一样工作。(也不适用于 facebook 应用程序)

(2) 我得到了动态链接,它在 chrome 浏览器中运行,没有给出任何错误。但在 firebase 控制台上没有列出所有链接,除非我使用控制台创建动态链接,然后它将出现在控制台中。(以编程方式不会反映在控制台上)

这是我创建动态链接的代码:

let strLink = "https://google.com/page?Id="+self.textField1.text!

    guard let deepLink = URL(string: strLink) else  return 

    let components = DynamicLinkComponents(link: deepLink, domain: "e59pd.app.goo.gl")

    let iosParams = DynamicLinkIOSParameters(bundleID: "com.procorner.eduflex")
    iOSParams.minimumAppVersion = "8.0"
    components.iOSParameters = iOSParams

    let socialParams = DynamicLinkSocialMetaTagParameters()
    socialParams.title = "Title is here..."
    socialParams.descriptionText = "Description is here"
    socialParams.imageURL = URL(string:"https://firebasestorage.googleapis.com/v0/b/todo-list-1da4a.appspot.com/o/shopping%403x.png?alt=media&token=b5f02235-5c1e-4354-94c5-1354eb36bed9")
    components.socialMetaTagParameters = socialParams

    // Build the dynamic link
    let link = components.url
     print("\n\n\n\nlink",link)
    // Or create a shortened dynamic link
    components.shorten  (shortURL, warnings, error) in
        if let error = error 
            print(error.localizedDescription)
            return
        
        print("\n\n\nshortURL",shortURL)

        self.strGLink = (shortURL?.path)!
        self.textVIew1.text = shortURL?.absoluteString
        // TODO: Handle shortURL.
    

【问题讨论】:

【参考方案1】:

简短回答: Chrome 使用 URI 方案,Safari 默认使用通用链接。这意味着您可以在 Chrome 中键入 firebase 链接,它会通过 URI 方案打开应用程序,但在 Safari 中,您必须单击 Firebase 链接才能打开应用程序,因为 safari 使用通用链接。

说明

Firebase 动态链接依赖于使用 URI 方案或通用链接来打开应用。 Safari 默认使用通用链接,而如果安装了应用程序,Chrome 将使用 URI 方案。这一点很重要,因为通用链接只有在被点击时才会打开应用程序,而不是在它们被输入地址栏或以编程方式打开时。要从 Safari 中打开该应用程序,您需要将其粘贴到某个将其注册为链接的位置,然后单击它。

我建议使用消息或注释打开您的 Firebase 链接,因为这将允许您点击 Firebase 链接以启用通用链接。

【讨论】:

Firebase 动态链接将仅在 iOS 8 上使用自定义 URL 方案。我相信 OP 问题不是这种情况。【参考方案2】:

(1) 请说明您如何在 Safari 中测试链接?除了 Chrome 之外,还有哪些浏览器可以正常工作?还有你如何在 Facebook iOS App 中进行测试?

如果您将链接粘贴到浏览器地址栏并点击回车,这将不起作用。 Firebase 动态链接使用通用链接的原因。将链接粘贴到 Safari 时,通用链接将无法使用。由于AppPreview page,Firebase 动态链接仍将正确处理这种情况。如果您将链接粘贴到 Safari,您应该会看到 AppPreview 页面。点击此处的OPEN 按钮应启用通用链接并打开您的应用程序。

Chrome 偏离了 iOS(和 Safari)处理通用链接的方式。有些人会说偏向更好。

(2) 使用 API 创建的 Firebase 动态链接不会显示在控制台中。

原因是:我们的一些客户(例如 Google 相册)每天会创建数百万个 Firebase 动态链接。试图在控制台中显示这么多信息看起来不是一个好主意。尝试在控制台中使用这些信息可能并不有趣。

同时,如果您有需要在 Firebase 控制台中查看所有链接的用例,请随时在此处打开 Firebase 票证或发布详细信息。我们总是对新功能或改进的想法持开放态度。

【讨论】:

以上是关于Firebase 动态链接在 safari swift 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

通过 Safari 打开时,Firebase 动态链接不会重定向到应用程序

Firebase 动态链接在 iOS 上不起作用

如何将通用链接重定向到应用商店而不在 Safari 浏览器上显示弹出窗口?

动态链接 Firebase

Firebase 动态链接始终为空

Firebase 动态链接不会在社交媒体中预览图片