冷启动 iOS 14 时未处理 iOS Firebase 动态链接
Posted
技术标签:
【中文标题】冷启动 iOS 14 时未处理 iOS Firebase 动态链接【英文标题】:iOS Firebase Dynamic link not handled on cold start iOS 14 【发布时间】:2020-11-01 02:21:36 【问题描述】:在我的设备上打开动态链接时,我在 SceneDelegate 中处理动态链接的函数在应用程序在后台运行时运行良好,但在应用程序完全关闭时运行良好。当我在应用程序关闭时单击动态链接时,应用程序会打开,但不会处理动态链接。我的场景委托函数如下所示:
场景委托功能
func scene(_ scene: UIScene, continue userActivity: NSUserActivity)
guard let _ = (scene as? UIWindowScene) else return
if let incomingURL = userActivity.webpageURL
print("Incoming URL is \(incomingURL)")
_ = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) (dynamicLink, error) in
guard error == nil else
print("Found an error! \(error!.localizedDescription)")
return
if let dynamicLink = dynamicLink
self.handleIncomingDynamicLink(dynamicLink)
非常感谢任何帮助理解这个问题!
【问题讨论】:
【参考方案1】:由于您的目标是 ios 14 ,您可以使用最新的 API,
所以你可以在任何视图上使用.onOpenURL()
修饰符。
.onOpenURL url in
_ = DynamicLinks.dynamicLinks().handleUniversalLink(url) (dynamicLink, error) in
guard error == nil else
print("Found an error! \(error!.localizedDescription)")
return
if let dynamicLink = dynamicLink
self.handleIncomingDynamicLink(dynamicLink)
【讨论】:
您可以在这里很好地找到更多详细信息。 medium.com/firebase-developers/… 我把它放在我的内容视图中的一些视图上,但它从来没有用过,我确实在内容视图中导入了 Firebase 你设置了“关联域”,然后请在闭包内打断点并检查一下。 在发布问题之前两者都已经完成 原因可能是你在使用 UIKIt app delegate 生命周期,尝试使用 SwiftUI app生命周期【参考方案2】:我遇到了同样的问题,但我使用了@Yodagama 提出的解决方案,它工作得很好。就我而言,我正在加载一个 Firebase 动态链接。我面临的唯一问题是,如果用户没有安装该应用程序,该链接首先会将您重定向到 Apple Store 以下载它,一旦您拥有它,您必须再次打开该链接才能执行该功能。
我把我的代码放在这里,希望它可以帮助别人:
import SwiftUI
import Firebase
@main
struct Universal_Link_SwiftUI2_0App: App
init()
FirebaseApp.configure()
var body: some Scene
WindowGroup
ContentView().onOpenURL url in
_ = DynamicLinks.dynamicLinks().handleUniversalLink(url) (dynamicLink, error) in
guard error == nil else
print("Found an error! \(error!.localizedDescription)")
return
if let dynamicLink = dynamicLink
self.handleIncomingDynamicLink(dynamicLink)
【讨论】:
以上是关于冷启动 iOS 14 时未处理 iOS Firebase 动态链接的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 动态链接无法从冷启动 - Xcode 11,iOS 13