如何在 Swift5.3 中使用 AppDelegate 处理 URL
How to handle URL with AppDelegate in Swift5.3
我想处理一个url像“myApp://oauth-callback/xxxx”
在 Swift 5.3 中,我们不再有“AppDelegate”文件,文档现在已过时。
所以我通过遵循不同的文档来做到这一点,但它 不起作用 ... 我的 print 从未出现
有什么想法吗? (我是初学者)
谢谢
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
print("open via url")
if url.host == "oauth-callback" {
OAuthSwift.handle(url: url)
}
return true
}
}
您需要在 SceneDelegate
.
中实现 scene(_:openURLContexts:)
方法
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let url = URLContexts.first?.url else {
print(url)
if url.host == "oauth-callback" {
OAuthSwift.handle(url: url)
}
}
}
我在 ContentView
上使用了 onOpenURL
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.onOpenURL(perform: { url in
print("URL")
print(url)
})
}
}
}
我想处理一个url像“myApp://oauth-callback/xxxx”
在 Swift 5.3 中,我们不再有“AppDelegate”文件,文档现在已过时。 所以我通过遵循不同的文档来做到这一点,但它 不起作用 ... 我的 print 从未出现
有什么想法吗? (我是初学者)
谢谢
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
print("open via url")
if url.host == "oauth-callback" {
OAuthSwift.handle(url: url)
}
return true
}
}
您需要在 SceneDelegate
.
scene(_:openURLContexts:)
方法
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
if let url = URLContexts.first?.url else {
print(url)
if url.host == "oauth-callback" {
OAuthSwift.handle(url: url)
}
}
}
我在 ContentView
上使用了 onOpenURL@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
.onOpenURL(perform: { url in
print("URL")
print(url)
})
}
}
}