为什么苹果推送通知服务有时会给我错误 500?
Why apple push notification service sometimes gives me error 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 充满信心地发表评论。
这听起来像是上游错误;在任何情况下 APNs 服务器都不应发送 InternalServerError
而不是更具体的内容(例如 "expired authentication token" 或 "too many messages,"); InternalServerError
绝对表明苹果方面出了问题。我强烈建议 file a bug report with Apple;我认为这不是您或 apn
包的作者可以解决的问题。
我有一个用于应用程序后端的 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 充满信心地发表评论。
这听起来像是上游错误;在任何情况下 APNs 服务器都不应发送 InternalServerError
而不是更具体的内容(例如 "expired authentication token" 或 "too many messages,"); InternalServerError
绝对表明苹果方面出了问题。我强烈建议 file a bug report with Apple;我认为这不是您或 apn
包的作者可以解决的问题。