уведомления Apple APNS доставляются не по порядку. одно предыдущее push-уведомление отправляется вместо текущего - PullRequest
0 голосов
/ 26 августа 2018

Я настроил свои push-уведомления, используя библиотеку apn node.

Я использую лямбда-функцию AWS для отправки уведомления, и она вызывается из другой лямбда-функции с использованием события в качестве типа вызова следующим образом:

var pushPayload = { "users": users, "message": message };

var pushParams = {
    FunctionName: 'function-name',
    InvocationType: 'Event',
    LogType: 'Tail',
    Payload: JSON.stringify(pushPayload)
};

lambda.invoke(pushParams, function (err, data) {
    if (err) {
        callback(error);
    } else {
        callback(null, event.arguments.input);
    }
});

и лямбда-функция отправки уведомлений:

var options = {
    token: {
        key: "key",
        keyId: keyId,
        teamId: teamId
    },
    production: true
};
var message = event.message;
var users = event.users;

var apnProvider = new apn.Provider(options);

var iterationComplete = false;

for (var j = 0; j < users.length; j++) {
    if (j === (users.length - 1)) {
        iterationComplete = true;
    }

    var deviceToken = users[j].user_device_token;

    var notification = new apn.Notification();

    notification.alert = message;

    notification.contentAvailable = 1;

    notification.topic = "com.example.Example";

    context.callbackWaitsForEmptyEventLoop = false;
    apnProvider.send(notification, [deviceToken]).then((response) => {
        if (iterationComplete) {
            context.succeed(event);
        }
    });
}

Иногда уведомления не синхронизируются, и когда я отправляю сообщение, которое отправляет push-уведомление, приходит уведомление от предыдущего сообщения. Не уверен, почему это происходит или как это исправить.

...