为什么苹果推送通知服务有时会给我错误500?

我有一个node.js项目,我使用的应用程序的后端,我必须发送推送通知到Android和IOS,事情是,APNS有时会给我一个错误500试图发送通知。

以下是通常的回应:

{ sent: [], failed: [ { device: '<device_id>', status: '500', response: { reason: 'InternalServerError' } } ] 

我读到,如果你一次发送很多,APNS可以拒绝连接,事情是,我通常不会发送太多,每秒最多1个通知。

我使用node-apn,heres发送通知的代码。

 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); }); } 

它工作,我把它挂在一个testing服务器,但是当我,例如,离开它隔夜,第二天它只给了我错误500.它通常修复自己通过重新启动节点服务器,但这不可能发生生产。 有什么我可以做的,以解决这个问题,是APNS问题还是我在做什么?

编辑:我使用这个NPM包https://www.npmjs.com/package/apn

我是Pushy的主要作者, 这是一个Java推送通知库。 我不能就所使用的图书馆的具体情况与权威进行交stream,但可以对一般的APNs充满信心地发表评论。

这听起来像是一个上游的bug。 没有任何情况下,APNs服务器应该发送一个InternalServerError而不是更具体的东西(例如“过期的authentication令牌”或“太多的消息”)。 InternalServerError肯定表明苹果方面出了问题。 我强烈的build议是向苹果提交一份错误报告 。 我不认为这是你可以解决的问题,也可以由apn软件包的作者来解决。