为啥苹果推送通知服务有时会给我错误 500?
Posted
技术标签:
【中文标题】为啥苹果推送通知服务有时会给我错误 500?【英文标题】:Why apple push notification service sometimes gives me error 500?为什么苹果推送通知服务有时会给我错误 500? 【发布时间】:2016-11-04 17:55:55 【问题描述】:我有一个 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。它通常通过重新启动节点服务器来修复自己,但这可以t 发生在生产中。我能做些什么来解决这个问题吗?是 APNS 问题还是我正在做的事情?
编辑:我正在使用这个 npm 包https://www.npmjs.com/package/apn
【问题讨论】:
有同样的问题 也许你已经修好了? 它一直在发生,我似乎无法找到导致它的原因。因为那个项目有点死了,我从来没有修复它,我稍后再检查一下,看看我能找到什么,如果你找到了,我将永远感激不尽。 另外,我只是意识到我没有说我使用的是什么 NPM 包。我用的是npmjs.com/package/apn,你们用的是同一个包吗? 【参考方案1】:我是Pushy 的主要作者,这是一个 Java 推送通知库。我无法权威地谈论您正在使用的库的具体细节,但可以对 APNs 大体上充满信心地发表评论。
这听起来像是一个上游错误;在任何情况下,APNs 服务器都不应发送 InternalServerError
而不是更具体的内容(例如,“过期的身份验证令牌”或“消息过多”); InternalServerError
绝对表明苹果方面出了问题。我强烈推荐file a bug report with Apple;我不认为这是您自己或apn
包的作者可以解决的问题。
【讨论】:
好像是这样,这是不久前的事了,从那以后我就停止了那个项目。但是现在我在一个正在进行的项目中使用这个代码,我会看看这是否会再次发生并收集数据来通知苹果。谢谢你的建议:)以上是关于为啥苹果推送通知服务有时会给我错误 500?的主要内容,如果未能解决你的问题,请参考以下文章