在App.swift文件中的何处放置应用程序委托代码?

问题描述

我正在尝试使Snapkit与SwiftUI一起使用,以允许通过SnapChat登录。我正在跟这个StackOverflow问题(Can I use the Snapchat SDK (SnapKit) with SwiftUI?)一起追随,但是我很难使公认的解决方案正常工作。发布为答案的代码旨在放入应用程序委托文件中,但是从最新版本的XCode开始,不再使用它们。相反,需要将代码段放置在AppName.swift文件中,但不会触发我的断点。这是我当前的App.swift文件版本:

import SwiftUI
import SCSDKLoginKit

@main
struct SampleApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

func scene(_ scene: UIScene,openURLContexts URLContexts: Set<UIOpenURLContext>) {
    for urlContext in URLContexts {
        let url = urlContext.url
        var options: [UIApplication.OpenURLOptionsKey : Any] = [:]
        options[.openInPlace] = urlContext.options.openInPlace
        options[.sourceApplication] = urlContext.options.sourceApplication
        options[.annotation] = urlContext.options.annotation
        SCSDKLoginClient.application(UIApplication.shared,open: url,options: options)
    }
}

任何帮助将不胜感激。谢谢!

编辑:这是感谢Asperi的有效解决方案!如果有人遇到此问题,请在此处更新代码

import SwiftUI
import SCSDKLoginKit

@main
struct SampleApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onopenURL { url in
                    SCSDKLoginClient.application(UIApplication.shared,open: url)
                }
            }
        }
    }

解决方法

您应该改用.onOpenURL,例如

@main
struct SampleApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
              .onOpenURL { url in 
                  // .. do whatever needed here
              }
        }
    }
}