我在一个Android应用中集成了Firebase Cloud 消息传递 . 应用程序收集FCM令牌并将其发送到存储令牌的远程服务器,以便(最终)使用FCM endpoints 向用户发送推送通知

https://fcm.googleapis.com/fcm/send

应用程序以这种方式获取令牌:

String refreshedToken = FirebaseInstanceId.getInstance().getToken();

我注意到令牌有两种不同的格式 .

第一种格式是以xxxxxxxxxxx:APA91b开头的152个字符的字符串

第二个是从APA91b开始的140个字符的字符串

据我所知,Firebase Topic Message Received Status using Google API第一种格式是“新”,第二种格式是“旧” . 但到目前为止,我找不到令牌格式和应用版本(以及Firebase SDK版本)或Android API级别之间的任何关联 .

问题是我无法使用旧格式推送令牌向客户端发送通知 .

如果我尝试使用实例ID endpoints https://iid.googleapis.com/iid/info获取令牌详细信息,则会收到“InvalidTokenVersion”错误 .

我想知道的是:

  • 为什么具有相同应用版本的客户端会生成不同的令牌格式?

  • 有没有办法使用旧格式令牌或将它们转换为新格式?

谢谢