Firebase 动态链接无法从冷启动 - Xcode 11,iOS 13

Posted

技术标签:

【中文标题】Firebase 动态链接无法从冷启动 - Xcode 11,iOS 13【英文标题】:Firebase dynamicLink not working from cold start - Xcode 11, iOS 13 【发布时间】:2020-01-02 18:18:39 【问题描述】:

如果您直接从动态链接启动应用(并假设您的应用尚未在后台运行),则不会调用 application:continueUserActivity。

过去,我们曾经依赖于 application:didFinishLaunchingWithOptions,但是从 ios13 和 Xcode 9 开始,这不再适用。现在,当您从 dynamicLink 启动应用程序时,launchOptions 为 nil,因此这不再起作用(此解决方案不再起作用的示例在这里:https://***.com/a/46722785/6553577)

有谁知道如何处理这个问题? (感谢您的回复)

【问题讨论】:

【参考方案1】:

感谢马特,并按照他的建议使用场景委托,我能够让它工作。供参考,并帮助朋友们花费数小时,这是我的快速代码:(这是在 iOS v13.3 上测试的,使用 Xcode v11.3 和 Firebase iOS SDK v6.14.0)

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) 
        guard let _ = (scene as? UIWindowScene) else  return 

        if let userActivity = connectionOptions.userActivities.first 
            if let incomingURL = userActivity.webpageURL 
                _ = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL)  (dynamicLink, error) in
                    guard error == nil else  return 
                    if let dynamicLink = dynamicLink 
                    //your code for handling the dynamic link goes here
                    
                
            
        
    

【讨论】:

这正是我的问题。你为我节省了很多时间浪费的时间。谢谢你。谢谢你。谢谢@MegaMaziar 非常感谢,我在 Firebase 深层链接和 iOS13 及更高版本中苦苦挣扎,Firebase 页面中没有可用的文档。【参考方案2】:

现在一切都发生在场景委托中。使用 scene(_:willConnectTo:options:) 代替在启动时检测 NSUserActivity 或 URL 上下文。

【讨论】:

以上是关于Firebase 动态链接无法从冷启动 - Xcode 11,iOS 13的主要内容,如果未能解决你的问题,请参考以下文章

如何区分 Firebase 动态链接的启动和安装?

无法从 Firebase 缩短的动态链接网址检索动态链接

Firebase 动态链接无法直接打开应用

Firebase 动态链接在应用启动时不起作用

无法从短动态链接中检索数据 - Firebase

冷启动 iOS 14 时未处理 iOS Firebase 动态链接