私はこれに数日間苦労しており、立ち往生しています。Azure Mobile Services を使用しており、2 つのスケジューラ スクリプトが定義されています。1 つは非常に単純で、ユーザー 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;
}
});
}
}
2 つ目のスケジューラ スクリプトは、より精巧で、アプリの実際のプッシュ通知ロジックを含んでいます。上記とまったく同じ sendPushNotification() 関数が含まれています。この 2 番目のスクリプトには、「テスト」通知を送信する追加の呼び出しも含まれています。
つまり、これら 2 つのスクリプトをセットアップしてスケジュールすると、私の iOS デバイスは 15 分ごとに合計 3 つのプッシュ通知を受け取るはずです。通知がサーバーから送信されたときに表示されるように、タイムスタンプも付けています。
ただし、これらのスクリプトを手動で実行するか、15 分ごとに単独で実行すると、すべての通知を受け取ることはほとんどありません。時々私は何も得られません。最初のテスト通知しか届かないことがあります。時々、最初のテスト通知である「実際の」通知を受け取りますが、2 番目のテスト通知 (「実際の」通知を送信したのとまったく同じコードによって送信されるはずでした) が届かないことがあります。
ポータルのログを確認しましたが、APNS から返されるエラーはありません。過去に無効なデバイス トークンのエラーを確認したので、ログが機能していることはわかっています。
また、単純な C# アプリケーションを使用して APNS 経由でこれらのデバイスのプッシュ通知をまったく問題なく送信したことも述べておく必要があります。
誰かが何か提案をしたり、私が間違っている可能性があることを確認したりできますか? レビュー待ちのアプリがあり、この問題に対処したいと思っています。