在2-3小时不活动后未收到iOS后台推送通知

时间:2014-12-16 03:56:01

标签: ios background notifications push

我的应用通过推送通知执行静音背景提取。一切正常,当用户在最近60分钟内打开应用程序或在60分钟内发送推送通知时,即使设备被锁定,从我们的服务器发送的推送通知也会按预期触发静默背景提取。 / p>

但是,当用户没有打开应用程序2-3小时或者在2-3小时内没有发送推送通知时,该应用程序没有收到推送通知。我一直在记录应用程序活动,并且我已经确认:

didReceiveRemoteNotification:fetchCompletionHandler:

未在应用代表上调用。

更多事实:

  1. 在应用程序的plist.info中,我将UIRequiresPersistentWiFi设置为true,将UIBackgroundModes设置为(仅)远程通知
  2. 推送通知有效内容仅包含内容可用密钥
  3. 经过2-3小时不活动(无法发送推送通知或没有用户活动),我在iPhone 5和仅支持Wifi的iPad 2上都看到相同的结果,两者都运行iOS 8.1.2。换句话说,互联网连接是无线网络还是无线网络都无关紧要。
  4. 我不相信我达到了限速边界,因为我每小时每小时只发送1-2次推送通知。
  5. 我的理解是iOS应该继续在后台唤醒应用程序并使其能够处理推送通知中的后台提取 - 即使在几小时不活动之后(只要设备处于唤醒状态并且具有互联网连接)

    我想知道是否有其他人经历过这种情况,如果是的话,我是否找到了解决方法。

    提前致谢!

4 个答案:

答案 0 :(得分:1)

通过

目标>能力>背景模式

启用背景模式

答案 1 :(得分:0)

没有解决办法。您可以尝试PushKit(iOS VOIP推送通知),它更可靠,但仅限iOS8或VOIP持久套接字,可从iOS7获得(更难)。

Apple不保证立即投放后台/抓取推送通知(包含:content-available=1)。 这些通知旨在让应用a chance在两次运行之间更新其内容,而不是“immediate”也不可靠。

iOS将根据未记录的与能源相关的条件决定何时发送此通知。

换句话说 - 只有在iOS决定时,您的应用才会收到通知,但不会影响电池。根据我的观察,这取决于许多事情,例如:

  • 如果您的设备已连接电源,
  • 使用3G的Wi-Fi,
  • 上次通知的时间,
  • 处理最后一个时使用的能源和数据带宽应用程序,它......
  • 最近过去使用设备的时间和方式(锁定/解锁屏幕)

我甚至注意到在调试会话中运行的应用程序(通过Xcode,通过电缆连接)之间的区别 - 始终传递通知,当我从Springboard /处于发布模式(不同的能源条件)启动应用程序时 - 然后它开始行为不端。

答案 2 :(得分:0)

 [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
 [[UIApplication sharedApplication] registerForRemoteNotifications];

答案 3 :(得分:0)

在你的info.plist中尝试这个,它对我有用。

info plist file.

这会唤醒您的应用以在后台模式下接收通知。