首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数据库中删除不再有效的FCM令牌

从数据库中删除不再有效的FCM令牌
EN

Stack Overflow用户
提问于 2022-03-11 04:34:56
回答 2查看 481关注 0票数 1

我正在向有fcm令牌的移动设备发送通知。在发送时,我会得到一个响应,可以对每个fcm令牌有一个错误。我希望删除那些无效的令牌,这些令牌肯定将不再工作,但是保留可能已经失败并在将来仍然可以工作的令牌。

我正在使用node-gcm包。

在每个令牌的响应中,error字段的可能值是什么。我应该对这个值进行哪些检查,以便只删除永久无效的令牌?

代码语言:javascript
复制
    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);
        }
      }
    });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-11 06:16:36

我从回购处得到了答案。

他们建议检查错误是否与'NotRegistered'匹配。

我修改了代码以检查'NotRegistered''InvalidRegistration'

代码语言:javascript
复制
    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

例如:InvalidRegistrationNotRegisteredMessageTooBigUnavailable等。

回购https://github.com/ToothlessGear/node-gcm/issues/360的问题与对策

票数 1
EN

Stack Overflow用户

发布于 2022-03-11 04:54:54

指示应该删除令牌的两个最常见的错误代码是messaging/invalid-registration-tokenmessaging/registration-token-not-registered

我建议您的逻辑基于这段代码中的功能-样品回购

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71433689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档