我在检测来自APNS的推送通知时遇到问题。
如果应用未运行或在后台有来自APNS的推送通知,
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
不起作用。
当我回到前台而没有从通知中心选择推送通知消息时,它就不起作用了。
我该如何解决这个问题?
我正在测试iOS 6.13和iOS 7.0.4中的应用程序。
感谢您的帮助。 :)
答案 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文档:
如果应用程序正在运行并收到远程通知,则应用程序会调用此方法来处理通知。