在iOS上安装多种版本时,Firebase动态链接无法打开正确的应用

时间:2019-12-05 16:17:01

标签: ios firebase flutter firebase-dynamic-links

我们为Android和iOS开发了一个flutter应用程序,具有不同的口味:devtestprod,因此共有6个应用程序。对于用户,我们通过电子邮件发送一个Firebase动态链接(其中带有深层链接),以便在用户点击时将其导航到特定屏幕。

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

现在,这在Android上可以正常使用。 在iOS上,如果仅安装了一个应用程序,则工作正常,但是例如,如果安装了dev test应用程序,则点击动态链接将始终打开< em> test 应用。当安装了devtestprod时,也是如此:test已打开。

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

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

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 11、12和13)上使用的iOS版本,其行为都是相同的。 我们正在使用Flutter 1.9.1-hotfix6firebase_dynamic_links 0.5.0+1

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

3 个答案:

答案 0 :(得分:2)

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

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

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

  2. 使用自定义域

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


在Android上它是开箱即用的,因为 you 负责将清单文件中特定应用的路径进行匹配。在iOS上,此操作不起作用,因为 Firebase 负责托管的y = np.sin(x)文件中的此类匹配。


有关更多信息,我写了an extensive answer here

答案 1 :(得分:1)

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

步骤

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

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

在Xcode的“签名和功能->关联域”中的测试目标中,使用“ test.page.link”

并为生产目标设置production.page.link

答案 2 :(得分:0)

请勿在Firebase控制台中使用一个项目,最好在<key>com.apple.developer.associated-domains</key>中拆分和使用不同的url