iOS 13中的本地通知didReceive



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

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

有几种方法,一种简单的方法是通过NotificationCeneter进行后期通知。

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类,它是Singleton,它保留了顶部的NavigationController和关于当前视图堆栈的所有知识。如果我需要从AppDelegate打开一些特定的屏幕,我会使用类似的东西:

MyNavigator.shared.goToSomeScreen()

尽管如此,一切都取决于你当前的代码和你的需求,当然你可以找到更适合你的代码。

最新更新