IOS;当应用程序未运行或在后台时,推送通知不起作用
Posted
技术标签:
【中文标题】IOS;当应用程序未运行或在后台时,推送通知不起作用【英文标题】:iOS; Push notification is not work when the app is not running or in background 【发布时间】:2013-11-26 07:35:43 【问题描述】:我在检测来自 APNS 的推送通知时遇到问题。
如果应用程序未运行或在后台时有来自 APNS 的推送通知,
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
没用。
当我回到前台而不从通知中心选择推送通知消息时,它不起作用。
我该如何解决这个问题?
我正在 ios 6.13 和 iOS 7.0.4 中测试该应用。
感谢您的帮助。 :)
【问题讨论】:
您似乎还没有完全阅读文档护理。 developer.apple.com/library/ios/documentation/… 读取应用程序:didFinishLaunchingWithOptions: 首先确保APNS的基本设置.. 【参考方案1】:实际上,通知的第一个接收者是系统,而不是你的应用程序。
如果您的应用不在前台,应用的application:didReceiveRemoteNotification:fetchCompletionHandler
将永远不会被调用,直到您点按通知以使您的应用再次进入前台。
当推送通知到达并且用户点击“cancel
”时,your app has no way to read that push notification again
。您必须实现一个单独的功能(很可能在 server-side
上)来获取发送到此设备的通知列表。
【讨论】:
如果系统在后台没有提醒我应用程序的通知怎么办?虽然application:didReceiveRemoteNotification:fetchCompletionHandler
在前台被调用。【参考方案2】:
来自 Apple 文档:
如果您的应用支持远程通知后台模式,请实现此方法。
这意味着您使用的方法专注于后台任务。并且仅在 iOS 7.0 之后可用。
我建议您使用application:didReceiveRemoteNotification:
。
来自 Apple 文档:
如果应用正在运行并收到远程通知,应用会调用此方法来处理通知。
【讨论】:
当应用程序不运行时,您是否可以正常工作。 ?我的意思是当应用程序处于非运行状态时如何处理推送通知?如果您收到许多通知并且您没有打开应用程序,也没有点击系统的通知面板怎么办。您如何保留这些推送以供以后检索。 @BalramTiwari,如果在应用程序未运行时收到应用程序通知,则设备会提醒用户该应用程序有数据等待它。如果用户不点击通知面板,您将一无所获以上是关于IOS;当应用程序未运行或在后台时,推送通知不起作用的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序在 iOS 中关闭且应用程序未在后台运行时从推送通知中获取数据
当应用程序处于未运行或后台状态时,如何处理推送通知有效负载而不点击它