检测应用程序是不是从推送通知启动/打开,然后将其重定向到特定视图控制器

Posted

技术标签:

【中文标题】检测应用程序是不是从推送通知启动/打开,然后将其重定向到特定视图控制器【英文标题】:Detect if the app was launched/opened from a push notification and then redirect it to particular view controller检测应用程序是否从推送通知启动/打开,然后将其重定向到特定视图控制器 【发布时间】:2015-01-30 07:58:31 【问题描述】:

我正在做的是当收到推送通知时,我正在导航到特定的视图控制器,具体取决于我从该通知中获得的用户信息。此导航和用户信息是从方法接收的

didReceiveRemoteNotification

当应用程序处于后台并接收通知时,这可以正常工作。 但是,当我的应用程序被强制停止时,我会收到通知,点击我的应用程序第一次启动后,didReceiveRemoteNotification 方法不会被调用,我无法将我的应用程序重定向到特定的视图控制器。它只是打开我的应用程序的第一页。 我如何检测到我的应用程序是从推送通知启动并从该通知中获取信息,这与我从 didReceiveRemoteNotification 获得的信息相同,现在我需要将其重定向到特定页面?我的应用支持来自 ios 7 及更高版本。 这是怎么回事,正在做这种类型的 senario ,但不知道该怎么做。

【问题讨论】:

【参考方案1】:

您可以通过 didFinishLaunchwithOptions:(lauchoptions) 方法检测通知。 在此方法中,使用 lauchoptions 读取通知字典,如 ` if (launchOptions) //launchOptions 不为零

    userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    apsInfo = [userInfo objectForKey:@"aps"];

`

然后根据通知键设置你的window.rootviewcontroller。

【讨论】:

以上是关于检测应用程序是不是从推送通知启动/打开,然后将其重定向到特定视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

检测是不是未通过 iOS 中的推送通知打开应用程序?

检测应用程序是不是从后台 Swift iOS 打开

检测应用程序是不是通过单击应用程序图标或推送通知启动(当应用程序被用户强制终止时)

推送通知以打开特定活动

从 Windows Phone 设备向 Web 服务发送推送通知

从推送通知打开应用程序时是不是调用了 didFinishLaunchingWithOptions