我的应用通过推送通知执行静音背景提取。一切正常,当用户在最近60分钟内打开应用程序或在60分钟内发送推送通知时,即使设备被锁定,从我们的服务器发送的推送通知也会按预期触发静默背景提取。 / p>
但是,当用户没有打开应用程序2-3小时或者在2-3小时内没有发送推送通知时,该应用程序没有收到推送通知。我一直在记录应用程序活动,并且我已经确认:
didReceiveRemoteNotification:fetchCompletionHandler:
未在应用代表上调用。
更多事实:
我的理解是iOS应该继续在后台唤醒应用程序并使其能够处理推送通知中的后台提取 - 即使在几小时不活动之后(只要设备处于唤醒状态并且具有互联网连接)
我想知道是否有其他人经历过这种情况,如果是的话,我是否找到了解决方法。
提前致谢!
答案 0 :(得分:1)
通过
目标>能力>背景模式
启用背景模式
答案 1 :(得分:0)
没有解决办法。您可以尝试PushKit
(iOS VOIP推送通知),它更可靠,但仅限iOS8或VOIP持久套接字,可从iOS7获得(更难)。
Apple不保证立即投放后台/抓取推送通知(包含:content-available=1
)。
这些通知旨在让应用a chance
在两次运行之间更新其内容,而不是“immediate
”也不可靠。
iOS将根据未记录的与能源相关的条件决定何时发送此通知。
换句话说 - 只有在iOS决定时,您的应用才会收到通知,但不会影响电池。根据我的观察,这取决于许多事情,例如:
我甚至注意到在调试会话中运行的应用程序(通过Xcode,通过电缆连接)之间的区别 - 始终传递通知,当我从Springboard /处于发布模式(不同的能源条件)启动应用程序时 - 然后它开始行为不端。
答案 2 :(得分:0)
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
答案 3 :(得分:0)
在你的info.plist中尝试这个,它对我有用。
这会唤醒您的应用以在后台模式下接收通知。