我正在制作iOS应用程序。我在哪里,我在某些地方附近收到通知。这很好。但是,当我按下通知时,我希望它导航到某个视图。 我想的就像我得到短信一样。我按下该短信通知,然后导航我正确的短信对话。
答案 0 :(得分:1)
当应用程序收到推送通知时,将调用UIApplicationDelegate中的方法。通知需要以不同的方式处理,具体取决于应用收到时的状态:
如果应用未运行且用户通过点击推送启动它 通知,推送通知将传递到您的应用程序中
的launchOptions
application(_:didFinishLaunchingWithOptions:)
如果应用正在运行且位于前台,则推送通知 将不会显示此功能将立即调用
application(_:didReceiveRemoteNotification:)
如果应用在后台运行或暂停且用户带来 它通过点击推送通知到达前台,这个功能 将被召唤。
application(_:didReceiveRemoteNotification:)
所以你可以在这些函数上更改根视图控制器: -
if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String: AnyObject] {
//Change your root view controller
}
这将检查launchOptions中是否存在UIApplicationLaunchOptionsRemoteNotificationKey的值。如果是,则这将是您发送的推送通知有效负载。
答案 1 :(得分:0)
我编写了一个简单的类,通过传递类类型,从一行代码中的任何位置导航到视图层次结构中的任何视图控制器,因此您要编写的代码也将与视图层次结构本身分离,实例:
Navigator.find(MyViewController.self)?.doSomethingSync()
Navigator.navigate(to: MyViewController.self)?.doSomethingSync()
..或者您也可以在主线程上异步执行方法:
Navigator.navigate(to: MyViewController.self) { (MyViewControllerContainer, MyViewControllerInstance) in
MyViewControllerInstance?.doSomethingAsync()
}
这里是GitHub项目链接:https://github.com/oblq/Navigator