我有一个node.js项目,我用于应用程序的后端,我必须向 Android和ios发送推送通知,事实是,APNS有时会给我一个错误500尝试发送通知. 这是通常的回应: { sent: [],failed: [ { device: 'device_id',status
这是通常的回应:
{ sent: [], failed: [ { device: '<device_id>', status: '500', response: { reason: 'InternalServerError' } } ]
我读到如果你一次发送很多APNS可以拒绝连接,那就是我通常不会发送那么多,就像每秒最多1次通知一样.
我使用node-apn,这是发送通知的代码.
function sendIosNotification(deviceTokens,body,data,musico) { var notification = new apn.Notification(); if (musico) { notification.topic = "<name_goes_here>.musico"; } else { notification.topic = "<name_goes_here>.cliente"; } notification.alert = body; notification.badge = 1; notification.sound = "dong.aiff"; notification.payload = data; apnProvider.send(notification, deviceTokens) .then( (response) => { console.log(response); console.log(response.failed); }); }
它工作,我把它安装在一个测试服务器,但是当我,例如,把它留在一夜,第二天它只给我500错误.它通常通过重新启动节点服务器修复自己,但这不会发生在生产.有什么我可以做的来解决这个问题吗?是APNS问题还是我正在做的事情?
编辑:我正在使用这个npm包https://www.npmjs.com/package/apn
我是 Pushy的主要作者,这是一个Java推送通知库.我不能就你正在使用的图书馆的具体细节发表权威,但可以对APN进行一般性的评论.这听起来像是一个上游错误;在任何情况下,APNs服务器都不应该发送InternalServerError而不是更具体的东西(例如“过期的身份验证令牌”或“太多的消息”); InternalServerError肯定表明苹果方面出现了问题.我的强烈建议是file a bug report with Apple;我不认为这是可以在你的结束或apn包的作者可以解决的问题.