我在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文档,没有响应意味着成功发送通知。
我该怎么做以确保客户端确实收到服务器的通知? 任何帮助将不胜感激!
答案 0 :(得分:0)
推送通知不是100%可靠,并且无法保证您将100%收到它。
服务质量
Apple推送通知服务包括默认的服务质量 执行存储转发功能的(QoS)组件。
如果APN尝试发送通知但设备处于离线状态, 通知存储一段有限的时间,并交付 设备何时可用。
仅存储特定应用程序的最近通知。 如果在设备离线时发送多个通知,则每个通知 新通知导致先前通知被丢弃。这个 仅保留最新通知的行为称为 合并通知。
如果设备长时间处于离线状态,则会发出任何通知 被存放,因为它被丢弃。
如果您有任何希望用户收到的重要消息,我建议您尝试本地通知。