强调格式可能会在未来更改部分,我建议保持安全,并具有超出通常的最大长度(如上所述)。由于注册令牌的格式和长度也可能不同。文档没有指定任何模式,因此允许使用任何有效的字符串。格式可能会在未来更改;因此,请不要根据任何模式验证此输入,因为如果发生这种情况,您的应用程序可能会出现故障。
与“registration_id”字段一样,大小的上限是cookie的最大大小,即4K(4096字节)。
[0-9a-zA-Z\-\_]*
我现在使用Firebase Cloud Messaging代替GCM。
我得到的registration_id长度为152.
每次我得到的开头都有":"(例如bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1),就像jamesc提到的那样。
我将令牌作为varchar(255),这对我有效。
然而,registration_id的长度与4k大小没有关系。您可以通过网络发送任何大小的数据。通常,cookie限制为4096字节,其中包括名称、值、过期日期等。
这是一个真实的 FCM 令牌:
c2aK9KHmw8E:APA91bF7MY9bNnvGAXgbHN58lyDxc9KnuXNXwsqUs4uV4GyeF06HM1hMm-etu63S_4C-GnEtHAxJPJJC4H__VcIk90A69qQz65toFejxyncceg0_j5xwoFWvPQ5pzKo69rUnuCl1GSSv
可以看到,该令牌长度为:152。
我认为注册ID的上限不是4K。可以安全地假设它远低于此。
通知有效负载的上限为4KB (链接),而通知有效负载包括令牌(链接)。由于有效负载还需要包含标题
、正文
和其他数据,因此注册ID应该很小。
这是我从文档中理解的 ¯\_(ツ)_/¯
我最后获得的令牌长度为163个字符。我认为可以安全地假设它们永远不会超过255个字符。 另一个答案中的一些评论报告了更高的长度!
更新
到目前为止,我运行我的应用程序已经有4个月了,有超过100,000个注册ID,每个ID都是163个字符长。很可能谷歌会保持ID长度稳定,以避免应用程序崩溃。因此,我建议:
我认为现在长度不太可能改变,但我会注意观察。如果您在应用程序中注意到不同长度的ID,请告诉我!
:
。文档https://firebase.google.com/docs/cloud-messaging/server显示一个示例令牌为`bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...`,其中明确包含`:`。 - jamesc:
。我认为它是一个有效的分隔符字符。 - AL.