客户端有效载荷中的MessageId字段是否一定与在服务器端发送消息后获得的MessageId一致?
当在服务器端发送消息且操作成功时,Firebase会返回一个FCM消息ID。这个字符串的格式如下:
projects/myproject-ffffff/messages/030aa08c-5e57-aaaa-bdbe-abcdeeeeffff
当客户端收到消息时,在网页端的有效载荷中似乎总是存在一个 fcmMessageId 字段。在移动端,还可以看到一个 messageId。
我的问题是:是否保证客户端 fcmMessageId/messageId 将与通过FCM API在服务器端发送消息后获得的 MessageId 字符串的最后一部分完全相同?
基于我的分析,看起来确实如此,但在文档中似乎没有相关说明。
这一信息至关重要,因为如果客户端的messageId与服务器端的匹配,在进行多播发送操作后就可以用它来唯一标识该消息。
解决方案
只要你对 Android上的messageId API文档 的信任程度,便可说它是被保证的:
这是由服务器自动生成的。将其视为不透明的字符串。不要依赖其格式的一致性。
这段话暗示,客户端和服务器端的确切字符串会相同,但字符串的确切格式并不保证一致。因此,你大概不应该编写任何代码来尝试解析它。相反,你应该把它当作不透明的值(也就是说,除了要实现完全相等之外,不要试图解读它的值)。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。