美文网首页IOS开发体验
IOS13应用程序未启动时无法接收scheme传值的问题

IOS13应用程序未启动时无法接收scheme传值的问题

作者: LazyJ | 来源:发表于2020-12-03 15:30 被阅读0次

网上找了几个小时都没找到真正的解答,千篇一律说是SceneDelegate管理,但是并没有解决只能进入而不能取到值的问题,实际上就是不走openURLContexts代理方法,因为从scheme启动时仅运行scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)这一个代理,如果需要走openURLContexts则需要手动添加跳转事件,并且启动代理中刚好就能取到scheme的url值,于是我就在启动代理中手动进行一次scheme启动,就可以走进代理了,不知道是不是正规的方法,但是目前没有发现什么问题。
当然,也可以直接在启动代理中设置打开的页面,这样可能会减少一次跳转的延迟。
解决了一天,哭了,问题是从小组件打开应用不能跳转发现的。

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        
        let vc =  MainViewController()
        self.window?.rootViewController=vc
             
        if connectionOptions.urlContexts.first != nil {
            UIApplication.shared.open(connectionOptions.urlContexts.first!.url, options: [:], completionHandler:nil)
        }
        
        guard let _ = (scene as? UIWindowScene) else { return }

    }
//URL跳转处理
    func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
        
        for context in URLContexts {
            let param = ["url": "\(context.url)"]
            NotificationCenter.default.post(name: NSNotification.Name("toast"), object: self, userInfo: param)
        }
  
    }

相关文章

网友评论

    本文标题:IOS13应用程序未启动时无法接收scheme传值的问题

    本文链接:https://www.haomeiwen.com/subject/bmbmwktx.html