如何在 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)
                })
        }
    }
}