gpt4 book ai didi

ios - 未安装应用程序时,Firebase 动态链接会导致 "Dynamic Link not found"

转载 作者:行者123 更新时间:2023-12-01 23:11:04 25 4
gpt4 key购买 nike

我在使用 DynamicLinks 时遇到问题。如果在 iPhone 上安装了该应用程序,则动态链接会使用深层链接打开 iOS 应用程序,并且一切正常。但如果该应用程序未安装,则不会显示该应用程序在 Apple App Store 中的页面,而是显示一个网页,上面写着“找不到动态链接”。

这是调试链接: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 和团队 ID:

Project settings in Firebase console

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

Dynamic Links settings

这样我就得到了关于 https://nomadflare.com/apple-app-site-association 的以下信息:

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

然后在我的 XCode 项目中,我在功能中启用了关联域,并将第一个关联域设置为 applinks:$(DYNAMIC_LINKS_DOMAIN),其中 DYNAMIC_LINKS_DOMAIN 是用户定义的build设置,取决于构建配置,但对于 prod 等于 nomadflare.com

在信息/URL 类型中,自定义 URL 方案为 $(PRODUCT_BUNDLE_IDENTIFIER) (同样,取决于构建配置,但对于产品来说,它是 com.nomadflare.NomadFlare .

最后,在我的 Swift 代码中,当用户点击共享按钮时会触发以下函数:

    func share() {
guard let uid = Session.shared.authenticatedUser?.id else {
return
}

guard let customDomains = Bundle.main.object(forInfoDictionaryKey: "FirebaseDynamicLinksCustomDomains") as? [String],
let bundleIdentifier = Bundle.main.bundleIdentifier,
let websiteUrlString = Bundle.main.object(forInfoDictionaryKey: "WebsiteUrl") as? String,
let websiteUrl = URL(string: websiteUrlString),
let appStoreID = Bundle.main.object(forInfoDictionaryKey: "AppStoreID") as? String else {
return
}

let urlBase = customDomains[0]
let link = URL(string: "\(urlBase)/?invitedby=\(uid)")
let referralLink = DynamicLinkComponents(link: link!, domainURIPrefix: urlBase)

referralLink?.iOSParameters = DynamicLinkIOSParameters(bundleID: bundleIdentifier)
referralLink?.iOSParameters?.minimumAppVersion = "1.0.0"
referralLink?.iOSParameters?.appStoreID = appStoreID

referralLink?.otherPlatformParameters = DynamicLinkOtherPlatformParameters()
referralLink?.otherPlatformParameters?.fallbackUrl = websiteUrl

KRProgressHUD.show()
referralLink?.shorten { (shortURL, warnings, error) in
KRProgressHUD.dismiss()
if let error = error {
print(error.localizedDescription)
return
}
let invitationUrl = shortURL
let text = NSLocalizedString("Check out NomadFlare. It's a dating app for travellers and digital nomads.", comment: "")
let shareAll = [text, invitationUrl!] as [Any]
let activityViewController = UIActivityViewController(activityItems: shareAll, applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view
self.present(activityViewController, animated: true, completion: nil)
}
}

这是我的 Info.plist 中的相关键:

<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://$(DYNAMIC_LINKS_DOMAIN)/app</string>
</array>
<key>LSApplicationQueriesSchemes</key>
<key>WebsiteUrl</key>
<string>$(WEBSITE_URL)</string>
<key>AppStoreID</key>
<string>1474350816</string>

WEBSITE_URL 是另一个特定于构建配置的用户定义设置,其值在生产环境中为 https://www.nomadflare.com

不过,我真的不确定我在推荐链接的 link 部分中放置的内容。

最佳答案

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

关于ios - 未安装应用程序时,Firebase 动态链接会导致 "Dynamic Link not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57988757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com