2014-10-26 65 views
1

我的应用程序中的行为推送通知存在一些问题。检查是否通过点击通知打开了应用程序

如果应用程序没有(甚至在后台)运行,当我触摸通知我可以分析它的有效载荷,做一个自定义操作,通过阅读“launchOptions”字典。

当我的应用程序在后台运行时,我无法检测用户何时通过点击通知来检测应用程序的前景,如应用程序:didReceiveRemoteNotification:fetchCompletionHandler:在后台立即调用,当我前台应用程序我无法检查它是否通过点击应用程序图标或通知来完成。

我知道这是可能的,因为Facebook的Messenger应用做到这一点 - 如果我点击它带给我聊天的通知,否则它使我想到我以前在哪里。

谢谢。

+0

有点笨重,但为什么不只是使用'NSUserDefaults'并设置一个关键? – Oxcug 2014-10-26 21:19:25

+0

我只想要在用户使用通知打开应用程序时发生一个操作,而不是点击图标。 FB Messenger这么做......所以这是可能的。 – MegaEduX 2014-10-26 21:30:37

+0

是啊,我说的' - 应用:didReceiveRemoteNotification:fetchCompletionHandler:'只设置一个布尔值,并检查它当应用程序又回到前台。 – Oxcug 2014-10-26 21:31:47

回答

1

如果用户点击应用程序图标,application:didReceiveRemoteNotification:fetchCompletionHandler不会被调用。

如果他们点击通知,application:didReceiveRemoteNotification:fetchCompletionHandler确实被调用,application.applicationState将是UIApplicationStateInactive

查看this answer获取代码片段,您可以使用该代码片段快速查看此操作以使其更具意义。

此外,要实现您的目标,请务必在应用程序状态为UIApplicationStateInactive而不是UIApplicationStateBackground时更新视图。该应用程序的状态将是UIApplicationStateBackground当推送通知的用武之地。应用程序的状态将是UIApplicationStateInactive只有当用户通过点击通知启动应用程序。

我见过很多答案的if语句像

if (application.applicationState != UIApplicationStateActive) { ... } 

但不会让你被传递推送通知,并且用户敲击的通知区分。

相关问题