我使用https://github.com/rpush/rpush gem为APNS服务器发送推送通知。它工作正常,但是当我打开rpush进程的--no-error-checks选项时,推送未在设备上传递的消息。但是日志文件没有任何错误。 没有这个选项,过程非常缓慢......我需要发送超过200k的通知。
rpush会出现什么问题?
答案 0 :(得分:0)
当您禁用错误检查时,您可能会在令牌列表的开头出现一些无效设备令牌的风险,这会阻止随后传递任何有效令牌。您应至少关闭--no-error-checks
一次,以识别无效的设备令牌并将其从数据库中删除。确保所有设备令牌有效后,您可以安全地重新启用--no-error-checks
。
如果你发现通知没有通过,但你得不到 反馈或验证问题,检查rpush日志中的EPIPE错误 和重新连接。偶尔会有失误,但如果你 每次请求都得到一个,这意味着Apple正在放弃 可以发送批次其余部分之前的连接。
最有可能的解释就是你要发送一个 沙箱令牌到生产服务。如果你的话也可能发生 有效载荷太长了,但rpush验证通常会抓住它 第一
当然,dev令牌通常是列表中的第一个,所以没有 来了,整个系统看起来很破碎。
我不认为可以分辨沙箱之间的区别 和生产令牌,所以唯一的方法是确保避免这种情况 像苹果推荐的那样做,并运行一个单独的实例 每个推送环境的提供者(和/或令牌收集者)。