3 回答
TA贡献1816条经验 获得超6个赞
scene(_:openURLContexts:)在您的场景委托中实施。
如果该网址启动了您的应用,则您将获得该网址scene(_:willConnectTo:options:),它位于中options。
TA贡献1802条经验 获得超5个赞
使用最新的SDK,如果您不使用SceneDelegate,则可以正常工作。
如果使用的是SceneDelegate,则不会调用以下AppDelegate方法,因此无法处理登录。
func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let handled = ApplicationDelegate.shared.application(
application,
open: url,
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplication.OpenURLOptionsKey.annotation])
return handled
}
这是因为(可以理解)将此方法推迟到SceneDelegate中的以下方法:
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
...
}
我可以确认适用于实现SceneDelegate的iOS 13应用程序的解决方案是:
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let url = URLContexts.first?.url else {
return
}
let _ = ApplicationDelegate.shared.application(
UIApplication.shared,
open: url,
sourceApplication: nil,
annotation: [UIApplication.OpenURLOptionsKey.annotation])
}
- 3 回答
- 0 关注
- 3126 浏览
添加回答
举报