使用" new" Firebase Cloud Messaging,我想将客户端设备registration_id
令牌可靠地保存到本地服务器数据库,以便服务器软件可以向他们发送推送通知。
我应该使用哪个最小的数据库字段大小来保存100%的客户注册令牌?
我发现有两个different libraries使用TextField
和VarChar(255)
但没有明确定义最大长度。另外,我希望服务器代码在收到令牌时进行快速检查,以确保他们能够看到"对 - 什么是一个很好的最小长度和一组字符来检查?
答案 0 :(得分:16)
我认为FCM的这一部分仍然与GCM相同。因此,您应该参考@TrevorJohns的这个answer:
文档未指定任何模式,因此允许使用任何有效字符串。 格式可能会在未来发生变化;请不要对任何模式验证此输入,因为这可能会导致您的应用在发生这种情况时中断。
与“registration_id”字段一样,大小的上限是cookie的最大大小,即4K(4096字节)。
强调格式可能会在将来发生变化部分,我建议保持安全并超出通常的最大值(如上所述)长度。由于注册令牌的格式和长度也可能不同。
对于通常的长度和字符,您可以参考这些two answers ,后者更明确:
我没有看到任何有关GCM registrationId格式的官方信息,但我已经分析了这些ID的数据库,可以得出以下结论:
- 在大多数情况下,注册ID的长度等于 162 符号,但可以是 119 符号的变体,也可能是其他长度;
- 它仅包含此字符:
[0-9a-zA-Z\-\_]*
- 每个regID包含一个或两个“分隔符”: - (减号)或_(下划线)
答案 1 :(得分:13)
我现在使用Firebase Cloud Messaging而不是GCM。
我获得的registration_id的长度是152。
每次开头我都有“:”,就像jamesc提到的那样(例如bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1)。
我将令牌设为varchar(255),这对我有效。
但是,registration_id的长度与大小无关 4k。您可以通过发送任何大小的数据 网络。通常,cookie限制为4096字节,由...组成 姓名,价值,有效期等。
答案 2 :(得分:0)
我认为注册ID的上限不是4K。可以放心地认为它比那要低得多。
通知有效载荷的上限为4KB(link),通知有效载荷包括令牌(link)。由于有效载荷还需要包含title
,body
和其他数据,因此注册ID应该很小。
我从文档¯\ _(ツ)_ /¯
了解到我最后得到的令牌长度为163个字符。我认为可以肯定地认为它们不会超过255个字符。
答案 3 :(得分:0)
这是一个真正的 fcm 令牌:
c2aK9KHmw8E:APA91bF7MY9bNnvGAXgbHN58lyDxc9KnuXNXwsqUs4uV4GyeF06HM1hMm-etu63S_4C-GnEtHAxJPJJC4H__VcIk90A5G50gsPvcIk90A50gswpjvcIk90A650gsqvpjnvgsqsqfwsqs4uVcIk90A62Fwsqs4uV4GyeF06HM1hMm-etu63s_4
如你所见,token的长度是:152