Swift导航到View from notification

问题描述 投票:1回答:2

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

ios swift notifications
2个回答
1
投票

当应用程序收到推送通知时,将调用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的值。如果是,则这将是您发送的推送通知有效负载。


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

© www.soinside.com 2019 - 2024. All rights reserved.