Swift导航到View from notification

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift导航到View from notification相关的知识,希望对你有一定的参考价值。

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

答案

当应用程序收到推送通知时,将调用UIApplicationDelegate中的方法。通知需要根据您的应用收到时的状态而有所不同:

如果应用程序未运行且用户通过点击推送通知启动它,则推送通知将在launchOptions中传递给您的应用

 application(_:didFinishLaunchingWithOptions:)

如果app正在运行并且在前台,则不会显示推送通知,此功能将立即调用

 application(_:didReceiveRemoteNotification:)

如果app在后台运行或暂停,并且用户通过点击推送通知将其置于前台,则将调用此函数。

application(_:didReceiveRemoteNotification:) 

所以你可以在这些函数上更改根视图控制器,如下所示: -

    if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String: AnyObject] {
       //Change your root view controller
     }

这将检查launchOptions中是否存在UIApplicationLaunchOptionsRemoteNotificationKey的值。如果是,则这将是您发送的推送通知有效负载。

另一答案

我编写了一个简单的类,通过传递类类型,从一行代码中的任何位置导航到视图层次结构中的任何视图控制器,因此您将编写的代码也将与视图层次结构本身分离,例如:

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

以上是关于Swift导航到View from notification的主要内容,如果未能解决你的问题,请参考以下文章

Swift View Controller 滑动两次问题

Swift 3:Tableview 选择行转到不同的导航视图

无法在 View Controller iOS Swift 中显示 TabBar

如何在 Xcode Interface Builder 中将导航项添加到 Table View Controller(带有静态单元格)?

Swift中Notification.Name这么难用怎么办

Swift ios导航栏在被滚动隐藏后不会出现