我们为Android和iOS开发了一个flutter应用程序,具有不同的口味:dev
,test
和prod
,因此共有6个应用程序。对于用户,我们通过电子邮件发送一个Firebase动态链接(其中带有深层链接),以便在用户点击时将其导航到特定屏幕。
预期的行为是,当用户点击dev
应用程序的动态链接时,它将在dev
应用程序中打开一个屏幕。其他口味类似。
现在,这在Android上可以正常使用。
在iOS上,如果仅安装了一个应用程序,则工作正常,但是例如,如果安装了dev
和 test
应用程序,则点击动态链接将始终打开< em> test 应用。当安装了dev
,test
和prod
时,也是如此: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-hotfix6
和firebase_dynamic_links 0.5.0+1
任何想法可能是由什么引起的?
答案 0 :(得分:2)
Firebase动态链接不支持对同一Firebase项目中包含的多个iOS应用/目标使用相同的URL前缀。
您可以通过多种方式解决此问题:
使用多个(子)域(如already suggested by Janmenjaya)
使用自定义域
使用多个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