使用apnsclient for python首次无法在IOS上收到通知

时间:2014-05-14 15:05:50

标签: python ios notifications

我在python中使用apns-client软件包将通知推送到IOS设备

self.con = self.session.get_connection("push_production", cert_file=PRO_PEM_FILE, passphrase=PASS_PHRASE)
self.srv = APNs(self.con)

message = Message([token], badge = badge, alert = alert)
res = self.srv.send(message)

for token, reason in res.failed.items():
   code, errmsg = reason
   print "Device failed: {0}, reason: {1}".format(token, errmsg)

for code, errmsg in res.errors:
   print "Error:", errmsg

if res.needs_retry():
   retry_message = res.retry()

使用上面的代码,我可以在大多数时间收到通知。 但是,如果收到上次通知后已经过了几个小时,我就无法在服务器端收到通知,没有任何例外。 我可以告诉代码self.srv.send(message)在没有任何响应的情况下执行,根据apns-client文档,没有响应意味着成功发送通知。

我该怎么做以确保客户端确实收到服务器的通知? 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

推送通知不是100%可靠,并且无法保证您将100%收到它。

请参阅:https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html

  

服务质量

     

Apple推送通知服务包括默认的服务质量   执行存储转发功能的(QoS)组件。

     

如果APN尝试发送通知但设备处于离线状态,   通知存储一段有限的时间,并交付   设备何时可用。

     

仅存储特定应用程序的最近通知。   如果在设备离线时发送多个通知,则每个通知   新通知导致先前通知被丢弃。这个   仅保留最新通知的行为称为   合并通知。

     

如果设备长时间处于离线状态,则会发出任何通知   被存放,因为它被丢弃。

如果您有任何希望用户收到的重要消息,我建议您尝试本地通知。