Удаление более недействительных токенов FCM из базы данных

Я отправляю уведомление на мобильное устройство, для которого у меня есть токены fcm. При отправке получаю ответ, который может для каждого токена fcm иметь ошибку. Я хочу удалить недействительные токены, которые наверняка больше не будут работать, но оставить токены, которые, возможно, не сработали на этот раз и могут работать в будущем.

я использую node-gcmупаковка.

Каковы возможные значения для errorполе в ответе каждого токена. Какие проверки этого значения я должен сделать, чтобы удалить только постоянно недействительные токены?

          sender.send(gcmMessage, { registrationTokens: fcmTokens }, (error, response) => {
      if (error) {
        console.log(error);
      } else {
        const failedTokens = fcmTokens.filter((_, index) => response.results[index].error != null);
        if (failedTokens.length) {
          // If there are failed tokens, check these to know whether we should delete them.
          
          this.clearUserFcmTokens(userID, failedTokens);
        }
      }
    });

2 ответа

Я получил ответ от самого репо.

Они рекомендуют проверить, соответствует ли ошибка .

Я изменил код, чтобы проверить 'NotRegistered'а также 'InvalidRegistration':

          sender.send(gcmMessage, { registrationTokens: fcmTokens }, (error, response) => {
      if (error) {
        console.log(error);
      } else {
        const invalidTokenErrorKeys = ['NotRegistered', 'InvalidRegistration'];
        const failedTokens = fcmTokens.filter((_, index) => response.results[index].error != null && invalidTokenErrorKeys.includes(response.results[index].error));
        if (failedTokens.length) {
          this.clearUserFcmTokens(userID, failedTokens);
        }
      }
    });

Значения поля ошибки соответствуют столбцу HTTP-кода по этой ссылке:

https://firebase.google.com/docs/cloud-messaging/http-server-ref#error-codes

Примеры: InvalidRegistration, NotRegistered, MessageTooBig, Unavailableи т.п.


Проблема и ответ на репо https://github.com/ToothlessGear/node-gcm/issues/360

Два наиболее распространенных кода ошибки, указывающие на необходимость удаления маркера: messaging/invalid-registration-tokenа также messaging/registration-token-not-registered.

Я рекомендую основывать вашу логику на этом коде в репозитории functions-samples .

Другие вопросы по тегам