Swift导航到View from notification

时间:2016-09-02 09:06:29

标签: ios swift notifications

我正在制作iOS应用程序。我在哪里,我在某些地方附近收到通知。这很好。但是,当我按下通知时,我希望它导航到某个视图。 我想的就像我得到短信一样。我按下该短信通知,然后导航我正确的短信对话。

2 个答案:

答案 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