【问题标题】:Firebase dynamic link not opening correct app when multiple flavors are installed on iOS在 iOS 上安装多种风格时,Firebase 动态链接无法打开正确的应用程序
【发布时间】:2020-03-30 15:02:48
【问题描述】:

我们为 Android 和 iOS 开发了一个 Flutter 应用,有不同的风格:devtestprod,所以我们总共有 6 个应用。为了让用户加入,我们通过电子邮件发送一个 firebase 动态链接(其中包含一个深层链接),以便在用户点击时将其导航到特定屏幕。

预期的行为是,当用户点击动态链接时 - 例如 - dev 应用程序,它会在 dev 应用程序中打开一个屏幕。其他口味类似。

现在这在 Android 上运行良好。 在 iOS 上,如果只安装了一个应用程序,它就可以正常工作,但是如果安装了 dev test 应用程序,那么点击动态链接总是会打开 test 应用程序。当安装了devtestprod 时也是如此:打开test

这是一个开发问题,与生产无关,因为用户永远不会安装测试或开发应用程序,但这很烦人,因为我们必须一直卸载和重新安装各种版本。

我们的动态链接具有以下格式(“”中的值是占位符):

Dev:  https://<app_id>.page.link/?link=http://dev.<mydomain>.com/reset?token=token1&apn=<mypackage>.dev&isi=<isiNumber1>&ibi=<mypackage>.dev
Test: https://<app_id>.page.link/?link=http://test.<mydomain>.com/reset?token=token2&apn=<mypackage>.test&isi=<isiNumber2>&ibi=<mypackage>.test
Prod: https://<app_id>.page.link/?link=http://<mydomain>.com/reset?token=token3&apn=<mypackage>&isi=<isiNumber3>&ibi=<mypackage>

我可以在真实设备上使用的所有 iOS 版本(即 iOS 11、12 和 13)的行为都是相同的。 我们正在使用 Flutter 1.9.1-hotfix6firebase_dynamic_links 0.5.0+1

任何想法这可能是由什么引起的?

【问题讨论】:

  • 你检查过this page的底部吗? These instructions 也可能有帮助。
  • @phi 据我了解,此页面上大部分涉及 swift 代码的点都需要由 Flutter 库完成,因为它需要将动态链接转发到 dart 代码。我按照flutter dynamic links library 上的说明进行操作,其中只提到了设置配置,而 swift 部分没有任何更改
  • 如果您转到目标设置/信息/URL 类型,您在那里看到任何条目吗?如果是这样,它们对你的口味有什么不同吗?
  • 是的,每种口味都有自己的标识符
  • @SOERGI 你有什么解决方案吗?我也在我的应用中寻找相同的功能。

标签: ios firebase flutter firebase-dynamic-links


【解决方案1】:

不要在firebase控制台中使用一个项目,最好在&lt;key&gt;com.apple.developer.associated-domains&lt;/key&gt;中拆分使用不同的url

【讨论】:

    【解决方案2】:

    在动态链接下的 Firebase 中,我们可以创建多个 url 域。而这些url域我们需要添加到不同target的关联域中。

    步骤

    假设我有两个目标测试和生产。

    我创建了两个域链接,例如“test.page.link”和production.page.link

    在 Xcode 的 Signing & Capabilities -> Associated Domain 下的测试目标中,使用“test.page.link”

    对于生产目标设置 production.page.link

    【讨论】:

      【解决方案3】:

      Firebase 动态链接不支持对同一 Firebase 项目中包含的多个 iOS 应用/目标使用相同的网址前缀。

      不过,您可以通过多种方式解决此问题:

      1. 使用多个(子)域(如already suggested by Janmenjaya

      2. 使用自定义域

      3. 使用多个 Firebase 项目(如 already suggested by Aleksandr


      在 Android 上,它开箱即用,因为 负责将路径与清单文件中的特定应用进行匹配。在 iOS 上它不起作用,因为 Firebase 负责托管 apple-app-site-association 文件中的此类匹配。


      如需更多信息,我已写信an extensive answer here

      【讨论】:

        猜你喜欢
        • 2018-10-22
        • 2020-03-23
        • 2021-06-16
        • 1970-01-01
        • 2021-08-07
        • 1970-01-01
        • 1970-01-01
        • 2022-10-18
        • 1970-01-01
        相关资源
        最近更新 更多