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

时间:2016-11-04 17:55:55

标签: node.js apple-push-notifications

我有一个用于应用程序后端的node.js项目,我必须向android和ios发送推送通知,事实是,APNS有时会在尝试发送通知时给出错误500。 / p>

这是通常的回应:

{ 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

1 个答案:

答案 0 :(得分:1)

我是Pushy的主要作者,这是一个Java推送通知库。我无法就您正在使用的图书馆的具体细节发表权威,但可以对APN进行一般性的评论。

这听起来像是一个上游错误;在任何情况下,APN服务器都不应该发送InternalServerError而不是更具体的内容(例如,“过期的身份验证令牌”或“过多的消息”); InternalServerError肯定表明苹果方面出现了问题。我的强烈建议是file a bug report with Apple;我不认为这是可以在您的最终或apn包的作者上解决的问题。