iOS版;当应用未运行或在后台运行时,推送通知无效

时间:2013-11-26 07:35:43

标签: ios push-notification apple-push-notifications

我在检测来自APNS的推送通知时遇到问题。

如果应用未运行或在后台有来自APNS的推送通知,

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

不起作用。

当我回到前台而没有从通知中心选择推送通知消息时,它就不起作用了。

我该如何解决这个问题?

我正在测试iOS 6.13和iOS 7.0.4中的应用程序。

感谢您的帮助。 :)

2 个答案:

答案 0 :(得分:2)

实际上,第一个通知接收者是系统,而不是你的应用程序。

如果您的应用不在前台,则在您点按通知以使您的应用再次进入前台之前,将永远不会调用应用application:didReceiveRemoteNotification:fetchCompletionHandler

当推送通知到达且用户点击“cancel”时,your app has no way to read that push notification again。您必须实现单独的功能(最有可能在server-side上)以获取发送到此设备的通知列表。

答案 1 :(得分:1)

来自Apple文档:

  

如果您的应用支持远程通知后台模式,请实施此方法。

这意味着您使用的方法侧重于后台任务。仅在iOS 7.0之后可用。

我建议您使用application:didReceiveRemoteNotification:

来自Apple文档:

  

如果应用程序正在运行并收到远程通知,则应用程序会调用此方法来处理通知。