本地通知在 iOS 13 内收到

Local notifications didReceive in iOS 13

我正在我的应用程序中实现通知,但我无法弄清楚当用户按下通知时如何转到特定的视图控制器。自 iOS 13 起,我的应用程序正在使用 SceneDelegate,但函数:userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) 仅在 AppDelegate 中被调用。

当我的应用程序使用 SceneDelegate 时,当用户点击通知时,如何转到特定的视图控制器? 我在网上找到的所有资源都处理了 iOS从 AppDelegate 选择视图控制器的 12 或更低版本。

有多种方法,一种简单的方法是通过 NotficationCeneter 进行 post 通知。

NotificationCenter.default.post(name: Notification.Name("SOME_NAME"), object: nil, userInfo: nil)

你应该为这个通知添加一个观察者。

 NotificationCenter.default.addObserver(self, selector: #selector(someMethod(notification: )), name: Notification.Name("SOME_NAME"), object: nil)

还有不同的选择

例如,我创建了一个简单的 Navigator class,它是 Singleton,它保留顶级 NavigationController 和有关当前视图堆栈的所有知识。 如果我需要从 AppDelegate 打开一些特定的屏幕,我会使用类似的东西:

MyNavigator.shared.goToSomeScreen()

不过,一切都取决于您当前的代码是什么以及您的需求是什么,您肯定可以找到更适合您的东西。