APNS(苹果推送通知服务)可靠性

我们的应用程序使用APNS来接收推送通知。 然而,我们的客户声称,他们的一些设备没有收到通知,并认为他们“必须”确保通知100%交付。 但是我已经在某个地方看到,APNS不是100%可靠的,应该有一些情况是不能通知的。

目前我很担心如何确保APNS随时可以收到。 我已经读过一个可能APNS没有交付的情况(设备可能离线)。 但是,我们的testing显示,即使设备在线(无线或3G),有时APNS没有交付。

APNS有没有可能交付的具体情况? 还是有什么我们(开发人员)可以使用代码来确保接收所有通知? 我在代码中所做的只是将应用程序注册到远程通知,然后写入didRegisterForRemoteNotificationsWithDeviceToken,然后将设备令牌丢给我们的服务器。

任何帮助将不胜感激,因为我们的客户几乎杀了我们,如果他们的设备都没有收到APNS!

  1. APNS基于Apple服务器,Apple不保证成功的邮件传送。
  2. 如果应用程序在通知到达时打开(即用户正在使用应用程序),则iOS不显示通知消息,您需要处理它。
  3. 只有当应用程序背景或死亡时,通知才会显示。
  4. 同时在您的服务器端实施反馈服务; 将帮助您摆脱旧的不需要的令牌(通过设置删除应用程序或禁用通知的用户)。
  5. 不要在短时间内向设备发送过多的通知,因为APNS只caching1条消息/设备(如果设备处于脱机状态)。 所以它可以在设备联机时传递消息。 我不确定邮件caching多长时间。

或者只是实现Pusher … http://pusher.com

我们正面临同样的问题。 正如大家所说,APNS是一个尽力而为的服务,所以你不能确定每个通知都会被传送,但是你可以做的是确定哪些已经被接收。 这就是我们要做的。 我们在我们的后端注册每个通知报告,移动应用报告它收到的每个通知。 然后我们设置一个等待收到通知的最大时间,如果我们没有收到报告,我们再试一次。

我希望这可能对某人有帮助(甚至2年后)

它在苹果文件中相当清楚地表明,它不是100%的,也不应该如此使用。 它以“尽力而为”发送。