Firebase 动态 link 未打开 iOS 应用
Firebase dynamic link not opening iOS app
不得不提一下这个动态 link 之前工作正常,但由于某种原因突然停止工作。
这是动态的link:
autobavaria1491911550production.page.link
并且这是 link 添加到关联域的能力:applinks:autobavaria1491911550production.page.link
用 apple-app-site-association
测试后结果是:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "K9B6CPM5NB.com.whipmobility.ios.operation",
"paths": [
"NOT /_/*",
"/*"
]
},
{
"appID": "S5Q34K6U59.com.autobavaria.ios.customer",
"paths": [
"NOT /_/*",
"/*"
]
}
]
}
}
com.autobavaria.ios.customer
是我希望动态 link 打开的包名,它在应用程序关联中可用,但它没有发生,是的,在 firebase 控制台中添加了 App Store ID 和团队 ID ,知道为什么会这样吗?
步骤:
- 删除您的应用程序
- 重新启动您的设备。
- 重新安装您的应用并进行测试。
根据 firebase,有时在下载与您的域关联的“apple-app-site-association”文件时会出错。这就是它发生的原因。
观看此视频:https://youtu.be/KLBjAg6HvG0?t=483 以获得调试帮助。
设置 Dynaminc link 从开始:https://www.youtube.com/watch?v=KLBjAg6HvG0
如果您已完成上述步骤,请检查您的 AppDelegate 文件中是否实现了正确的方法。
方法一:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if DynamicLinks.dynamicLinks().shouldHandleDynamicLink(fromCustomSchemeURL: url) {
let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url)
self.handleDynamicLink(dynamicLink)
return true
}
return true
}
方法二:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if let incomingURL = userActivity.webpageURL {
print(incomingURL)
let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamicLink, error) in
guard error == nil else {
print("Found an error! \(error!.localizedDescription)")
return
}
if let dynamicLink = dynamicLink {
self.handleDynamicLink(dynamicLink)
}
}
if linkHandled {
return true
} else {
//May be do other things with our incoming URL?
return false
}
}
return false
}
处理动态Link常用方法:
func handleDynamicLink(_ dynamicLink: DynamicLink?) {
guard let dynamicLink = dynamicLink else { return }
guard let deepLink = dynamicLink.url else { return }
}
不得不提一下这个动态 link 之前工作正常,但由于某种原因突然停止工作。
这是动态的link:
autobavaria1491911550production.page.link
并且这是 link 添加到关联域的能力:applinks:autobavaria1491911550production.page.link
用 apple-app-site-association
测试后结果是:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "K9B6CPM5NB.com.whipmobility.ios.operation",
"paths": [
"NOT /_/*",
"/*"
]
},
{
"appID": "S5Q34K6U59.com.autobavaria.ios.customer",
"paths": [
"NOT /_/*",
"/*"
]
}
]
}
}
com.autobavaria.ios.customer
是我希望动态 link 打开的包名,它在应用程序关联中可用,但它没有发生,是的,在 firebase 控制台中添加了 App Store ID 和团队 ID ,知道为什么会这样吗?
步骤:
- 删除您的应用程序
- 重新启动您的设备。
- 重新安装您的应用并进行测试。
根据 firebase,有时在下载与您的域关联的“apple-app-site-association”文件时会出错。这就是它发生的原因。
观看此视频:https://youtu.be/KLBjAg6HvG0?t=483 以获得调试帮助。
设置 Dynaminc link 从开始:https://www.youtube.com/watch?v=KLBjAg6HvG0
如果您已完成上述步骤,请检查您的 AppDelegate 文件中是否实现了正确的方法。
方法一:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if DynamicLinks.dynamicLinks().shouldHandleDynamicLink(fromCustomSchemeURL: url) {
let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url)
self.handleDynamicLink(dynamicLink)
return true
}
return true
}
方法二:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if let incomingURL = userActivity.webpageURL {
print(incomingURL)
let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamicLink, error) in
guard error == nil else {
print("Found an error! \(error!.localizedDescription)")
return
}
if let dynamicLink = dynamicLink {
self.handleDynamicLink(dynamicLink)
}
}
if linkHandled {
return true
} else {
//May be do other things with our incoming URL?
return false
}
}
return false
}
处理动态Link常用方法:
func handleDynamicLink(_ dynamicLink: DynamicLink?) {
guard let dynamicLink = dynamicLink else { return }
guard let deepLink = dynamicLink.url else { return }
}