未安装应用程序时,Firebase动态链接会导致“找不到动态链接”

xzlaal3s  于 2023-06-07  发布在  其他
关注(0)|答案(2)|浏览(367)

我有一个问题与动态链接。如果在iPhone上安装了该应用程序,则动态链接会打开具有深层链接的iOS应用程序,并且一切正常。但如果应用程序没有安装,而不是显示应用程序的页面在苹果应用程序商店,它会显示一个网页,说“动态链接未找到”。
下面是debug链接:https://www.nomadflare.com/app/?ibi=com%2Enomadflare%2ENomadFlare&imv=1%2E0&ofl=https%3A%2F%2Fwww%2Enomadflare%2Ecom&link=https%3A%2F%2Fnomadflare%2Ecom%2Fapp%2F%3Finvitedby%3DdZ3I3pK0KzcOGhO8AoVbBnn8XsO2&d=1
这就是我如何配置整个东西。在我的Firebase项目设置中,我设置了App Store ID和Team ID:

在我的动态链接设置中,我用我的自定义域和子路径定义了一个新的URL前缀(我在域的根目录下有一个网站,托管在Firebase Hosting上):

https://nomadflare.com/apple-app-site-association上有以下内容:

  1. {"applinks":{"apps":[],"details":[{"appID":"HLAKBN9F84.com.nomadflare.NomadFlare","paths":["NOT /_/*","/*"]}]}}

然后在我的XCode项目中,我在Capabilities中启用了Associated Domains,并将第一个关联域设置为applinks:$(DYNAMIC_LINKS_DOMAIN),其中DYNAMIC_LINKS_DOMAIN是一个用户定义的构建设置,取决于构建配置,但对于prod等于nomadflare.com
在Info/URL Types中,自定义URL方案是$(PRODUCT_BUNDLE_IDENTIFIER)(同样,这取决于构建配置,但对于prod,它是com.nomadflare.NomadFlare
最后,在我的Swift代码中,我有以下函数,当用户点击共享按钮时会触发:

  1. func share() {
  2. guard let uid = Session.shared.authenticatedUser?.id else {
  3. return
  4. }
  5. guard let customDomains = Bundle.main.object(forInfoDictionaryKey: "FirebaseDynamicLinksCustomDomains") as? [String],
  6. let bundleIdentifier = Bundle.main.bundleIdentifier,
  7. let websiteUrlString = Bundle.main.object(forInfoDictionaryKey: "WebsiteUrl") as? String,
  8. let websiteUrl = URL(string: websiteUrlString),
  9. let appStoreID = Bundle.main.object(forInfoDictionaryKey: "AppStoreID") as? String else {
  10. return
  11. }
  12. let urlBase = customDomains[0]
  13. let link = URL(string: "\(urlBase)/?invitedby=\(uid)")
  14. let referralLink = DynamicLinkComponents(link: link!, domainURIPrefix: urlBase)
  15. referralLink?.iOSParameters = DynamicLinkIOSParameters(bundleID: bundleIdentifier)
  16. referralLink?.iOSParameters?.minimumAppVersion = "1.0.0"
  17. referralLink?.iOSParameters?.appStoreID = appStoreID
  18. referralLink?.otherPlatformParameters = DynamicLinkOtherPlatformParameters()
  19. referralLink?.otherPlatformParameters?.fallbackUrl = websiteUrl
  20. KRProgressHUD.show()
  21. referralLink?.shorten { (shortURL, warnings, error) in
  22. KRProgressHUD.dismiss()
  23. if let error = error {
  24. print(error.localizedDescription)
  25. return
  26. }
  27. let invitationUrl = shortURL
  28. let text = NSLocalizedString("Check out NomadFlare. It's a dating app for travellers and digital nomads.", comment: "")
  29. let shareAll = [text, invitationUrl!] as [Any]
  30. let activityViewController = UIActivityViewController(activityItems: shareAll, applicationActivities: nil)
  31. activityViewController.popoverPresentationController?.sourceView = self.view
  32. self.present(activityViewController, animated: true, completion: nil)
  33. }
  34. }

下面是Info.plist中的相关键:

  1. <key>FirebaseDynamicLinksCustomDomains</key>
  2. <array>
  3. <string>https://$(DYNAMIC_LINKS_DOMAIN)/app</string>
  4. </array>
  5. <key>LSApplicationQueriesSchemes</key>
  6. <key>WebsiteUrl</key>
  7. <string>$(WEBSITE_URL)</string>
  8. <key>AppStoreID</key>
  9. <string>1474350816</string>

WEBSITE_URL是另一个特定于构建配置的用户定义设置,其值在生产环境中为https://www.nomadflare.com
我真的不知道我把我的推荐链接的link部分虽然。

pw9qyyiw

pw9qyyiw1#

您还必须设置应用程序的应用程序商店ID和动态链接中的iTunes参数。谢谢

x7rlezfr

x7rlezfr2#

问题中的第一个链接具有ibi查询参数,即bundle ID。不过,它还需要“您的应用的App Store ID,用于在应用未安装时将用户发送到App Store”,这是isi查询参数,根据上面的截图应该是1474350816(即将&isi=1474350816添加到长链接)。有关详细说明,请参阅https://firebase.google.com/docs/dynamic-links/create-manually

相关问题