我已经为此苦苦挣扎了几天并且被卡住了。我正在使用 Azure 移动服务并定义了两个调度程序脚本。一个非常简单,只需向用户 ID #1 的所有设备令牌发送测试推送通知:
function SendTestNotification() {
sendPushNotification(1, 'SendTestNotification @ ' + new Date());
function sendPushNotification(userId, body) {
var users = tables.getTable('NotificationTokens');
users.where({
User_Id: userId
}).read({
success: function(tokens) {
tokens.forEach(function(token) {
var alert = {
badge: 0,
alert: body,
sound: 'default'
};
push.apns.send(token.Token, alert,
{
error : function(err) {
console.error(err);
}
});
});
},
error: function(error) {
console.error(error)
return;
}
});
}
}
我有第二个调度程序脚本,它更加精细,包含我的应用程序的实际推送通知逻辑。它包含与上面显示的完全相同的 sendPushNotification() 函数。这个第二个脚本还包含一个额外的调用来向我发送“测试”通知。
总而言之,通过设置和安排这两个脚本,我的 iOS 设备应该每 15 分钟总共收到 3 个推送通知。我也给它们加上了时间戳,以便它们显示从服务器发送通知的时间。
但是,当我手动运行这些脚本或让它们每 15 分钟自行运行时,我几乎从未收到所有通知。有时我什么也得不到。有时我只收到第一个测试通知。有时我会收到第一个测试通知,即“真实”通知,但不会收到第二个测试通知(它应该由发送“真实”通知的完全相同的代码发送)。
我检查了门户网站上的日志,没有从 APNS 返回的错误。我知道日志记录正在工作,因为我过去曾看到无效设备令牌的错误。
我还应该声明,我已经使用简单的 C# 应用程序通过 APNS 发送这些设备推送通知,绝对没有问题。
任何人都可以提出任何建议或看看我可能做错了什么吗?我有一个等待审核的应用程序,并且很想解决这个问题。