我们对iOS推送通知相对较新,而且与Apple一样,我对解决方案的优雅印象深刻,但对于该功能的一些不透明的“幕后”管理也略显激怒了行为。
我的问题是:成功收到约。 10个单独的静音推送通知,每小时一个,在我们的测试用户最终打开之前,我们的测试应用程序不再提供。基于此,如果确定应用未被使用,iOS可能会停止提供静默推送通知。这是预期的行为吗?有没有人知道Apple为此使用的启发式的任何粗略细节?
感兴趣的人的测试详情
仅供参考,我们的测试设置如下:
application:didReceiveRemoteNotification:fetchCompletionHandler
委托方法为iOS7构建)结果:
通知格式(手动复制,原谅任何错误):
aps = {
badge = 2;
"content-available" = 1;
};
答案 0 :(得分:4)
我几个月前对我的应用程序的推送功能做了很多测试,我的一些经验来自:
- Apple推送通知不关心您的应用是否在使用中。
- APNS不是100%可靠,最有影响力的因素是网络质量(您的服务器到APN服务器,APN服务于您的设备)。
- 我已经在3分钟内向iphone4s发送了10,000个通知,设备收到95%以上的通知。所以,10个单独的静音 以每小时一次的推送通知没有压力。
醇>
现在,讨论一下你的问题:
首先:应该意识到通知的第一个接收者是系统,而不是你的应用程序。
如果你的应用程序不在前台,应用程序的应用程序:didReceiveRemoteNotification:fetchCompletionHandler永远不会被调用,直到你的应用程序再次进入前台。因此,您的“写日志并向我们的后端服务器发出简单请求”操作不适合“记录已发生的事件”。
我认为除非您的应用始终处于前台,否则没有一种“记录所有已发生事件”的好方法。
BTW:当您测试推送时,如果设备没有快速通知,您可以更改设备的网络(或关闭然后打开网络),有时,通知很快就会到来。答案 1 :(得分:0)
我可以想象你所看到的行为的三个原因:
这些是您的应用程序将不再启动以接收后台通知的唯一情况。现在你需要调试哪一个适用。