Как перейти к некоторому представлению из apns, щелкнув в SwiftUI?

В Swift 5 и UIKit при нажатии apns я нажимал на нужный контроллер представления, выбирая контроллер вида сверху и нажимая желаемый контроллер представления поверх контроллера вида сверху.

Но в SwiftUI я не могу этого сделать. Как я могу перемещаться из apns в SwiftUI.

Мне не нужно устанавливать желаемый контроллер в качестве корневого контроллера окна. Я хочу переместить желаемый контроллер поверх контроллера вида сверху. Я просто хочу нажать на контроллер из apns click.

Я получаю щелчок apns в этом методе делегата:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
}

1 ответ

Вы можете добавить свой собственный метод в SceneDelegate. Создайте объект SceneDelegate, установите его окно rootViewController следующим образом.

extension SceneDelegate{

func loginViewController() {

 let loginView = LoginView()

 let sceneDelegate = UIApplication.shared.connectedScenes.first?.delegate as? 
 SceneDelegate
 sceneDelegate?.window?.rootViewController = UIHostingController(rootView: 
 loginView)

 }
}

И вызовите такой метод:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

//Call method here 
let sceneDelegate = UIApplication.shared.connectedScenes.first?.delegate as? SceneDelegate
sceneDelegate?.loginViewController()

}
Другие вопросы по тегам