【发布时间】:2020-01-19 04:11:09
【问题描述】:
我对动态链接有疑问。如果在 iPhone 上安装了应用程序,动态链接将使用深层链接打开 iOS 应用程序,一切正常。但是,如果未安装该应用程序,它不会在 Apple App Store 中显示该应用程序的页面,而是显示一个显示“找不到动态链接”的网页。
这就是我配置整个事情的方式。 在我的 Firebase 项目设置中,我设置了 App Store ID 和团队 ID:
在我的动态链接设置中,我用我的自定义域和子路径定义了一个新的 URL 前缀(我的域根目录有一个网站,托管在 Firebase 托管上):
我在https://nomadflare.com/apple-app-site-association 上有以下内容:
{"applinks":{"apps":[],"details":[{"appID":"HLAKBN9F84.com.nomadflare.NomadFlare","paths":["NOT /_/*","/*"]}]}}
然后在我的 XCode 项目中,我在 Capabilities 中启用了关联域,并将第一个关联域设置为 applinks:$(DYNAMIC_LINKS_DOMAIN),其中 DYNAMIC_LINKS_DOMAIN 是用户定义的构建设置,取决于构建配置,但对于 prod 等于 @ 987654329@.
在 Info/URL Types 中,自定义 URL 方案是 $(PRODUCT_BUNDLE_IDENTIFIER)(同样,取决于构建配置,但对于 prod,它是 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 部分输入了什么。
【问题讨论】:
-
你解决了吗?
-
我遇到了同样的问题。你修好了吗?谢谢!
标签: ios firebase firebase-dynamic-links