用于Firebase云消息传递的FCM令牌有时未注册

问题描述

我有一个带有React Native Firebase的React Native应用程序,用于推送通知/云消息传递。 因此,通常一切都很好,但是iOS版本有一个问题。

问题是我收到的(n=1000)FCM令牌有时有效且有效,有时我将const fcmToken = await messaging().getToken()视为错误。

我的测试非常简单。我将一个版本上传到TestFlight。当我现在几次安装此版本的应用程序时,收到的FCM令牌有时有效,有时却无效。 相同的代码,相同的密钥/证书,相同的设备。

另外检查APNS令牌,这似乎是有效的,并且每次检查都可以正常工作。

  • 我确保在启动NotRegistered时设置了Firebase应用
  • 我检查了该应用程序是否已在APNS上注册
  • 我在另一部iPhone上进行了检查(结果相同)

当令牌有时有效而有时无效时,可能出什么问题了?

任何提示都值得赞赏?

系统信息:

[FIRApp configure];

解决方法

fcm发送一个NotRegistered状态,因为如果您基于ios关闭应用程序,则fcm和应用程序的状态将断开连接。

因此,当通过执行getToken函数获得令牌值时,您将获得旧的令牌值,而不是获得新的刷新令牌。

因此,如果执行以下代码,然后使用刷新令牌值再次执行发布消息,则可以正常接收消息。

const getToken = async () => {
  const oldToken = await messaging().getToken();
  await messaging().deleteToken(String(${fcm_send_id}),'*');
  const newToken = await messaging().getToken();
  if (oldToken === newToken) {
     console.log('not refresh')
  } else {
    return newToken;
  }
};

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...