application:openURL:options: vs scene:openURLContexts:



在https://developers.facebook.com/docs/ios/getting-started他们说

iOS 13将打开URL功能移动到SceneDelegate。如果您使用的是iOS 13,请在SceneDelegate中添加以下方法,以便像登录或共享功能这样的操作按预期进行:

// SceneDelegate.swift
import FacebookCore
...
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let url = URLContexts.first?.url else {
return
}
ApplicationDelegate.shared.application(
UIApplication.shared,
open: url,
sourceApplication: nil,
annotation: [UIApplication.OpenURLOptionsKey.annotation]
)
}

但是当我在application:openURL:options:中实现它时,它仍然按预期工作。所以我真的需要实现scene:openURLContexts:吗?为什么?这两个函数有什么区别?

我发现了一篇有趣的文章。基本上,如果你的应用运行在ios13上SceneDelegate比AppDelegate更可取。在这种情况下,即使执行application:openURL:options:,也会执行scene:openURLContexts:而不是application:openURL:options:

它们之间的另一个基本区别是openURLContexts可以接收一组URLContexts而不是一个简单的URL,而URLContext是一个除了URL之外还有元数据的对象。

相关内容

  • 没有找到相关文章

最新更新