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



我有一个node.js项目,我用于应用程序的后端,我必须向android和ios发送推送通知,问题是,APNS有时会给我一个错误500试图发送通知。

通常的回复如下:

{ 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。

这听起来像是上游的bug;在任何情况下,APNs服务器都不应该发送InternalServerError而不是更具体的东西(例如,"过期的身份验证令牌"或"消息太多");InternalServerError无疑表明苹果这边出了问题。我强烈建议你向苹果提交bug报告;我不认为这个问题可以由你或apn包的作者来解决。

最新更新