要检测无效令牌,我应该多久检查一次反馈服务?
我使用APNS服务实现了广播系统。我打开一个连接,发送所有APNS消息,然后断开连接。然后我在广播完成后立即打开反馈连接,并读取任何无效的令牌。
我确实在反馈连接上获得了无效令牌。但是,我的广播通常只会部分成功(某些设备接收而其他设备不接收),当我删除除已知好的令牌以外的所有设备时,我的测试设备会始终收到消息。
我认为这意味着Apple在收到前几个无效令牌后停止广播。
所以我没有正确地听取反馈意见吗?
答案 0 :(得分:3)
最后,正确处理此问题的唯一方法是转向Apple较新的“增强型通知格式”。此格式允许您为发送的每条消息提供ID,当Apple断开连接时,它们会向您发送错误以及导致错误的消息ID。
这允许客户端正确地重试已发送的消息,并删除无效的令牌
答案 1 :(得分:2)
每次发送推送和删除非活动设备时,都应检查反馈响应。虽然,现在看起来不像你的问题。
您的问题似乎在您的数据库中有一些无效令牌。如果您发送无效令牌,Apple会断开您的连接。发送非活动令牌无效,但如果您发送格式错误/无效令牌,Apple将终止您的套接字。
另一个问题可能是你身边缺少重试计划。您是否实施了任何可以重新打开Apple连接的例程,如果它在您推送时丢失了?您必须预测连接可能会失败,如果确实如此,您必须将其重新启动并再次从您停止的位置开始推送。
你应该寻找的是: