是否有 GCM registrationId 模式?
Posted
技术标签:
【中文标题】是否有 GCM registrationId 模式?【英文标题】:Is there a GCM registrationId pattern? 【发布时间】:2012-09-13 09:50:37 【问题描述】:/**
* @author Sebastien Lorber <i>(lorber.sebastien@gmail.com)</i>
*/
public enum EnumDeviceType
android
@Override
public boolean validateDeviceIdentifier(String deviceIdentifier)
Preconditions.checkArgument( !Strings.isNullOrEmpty(deviceIdentifier) );
return ANDROID_REGISTRATION_ID_PATTERN.matcher(deviceIdentifier).matches();
,
ios
@Override
public boolean validateDeviceIdentifier(String deviceIdentifier)
Preconditions.checkArgument( !Strings.isNullOrEmpty(deviceIdentifier) );
return IOS_DEVICE_TOKEN_PATTERN.matcher(deviceIdentifier).matches();
,
;
// TODO how do we validate registration Ids
public static final Pattern ANDROID_REGISTRATION_ID_PATTERN = Pattern.compile(".*");
// IOS device token is a 64 HEX string
public static final Pattern IOS_DEVICE_TOKEN_PATTERN = Pattern.compile("[a-fA-F0-9]64,64");
public abstract boolean validateDeviceIdentifier(String deviceIdentifier);
public boolean isIos()
return IOS.equals(this);
public boolean isAndroid()
return ANDROID.equals(this);
是否有任何已知的 GCM registrationId 模式可以用来在应用程序上验证registrationId 具有正确的形状? 我只想知道它有哪些字符范围,例如最小和最大大小...或任何其他信息...
【问题讨论】:
【参考方案1】:我没有看到任何关于 GCM 注册 ID 格式的官方信息,但我分析了我们的此类 ID 数据库并得出以下结论:
在大多数情况下,registrationID 的长度等于 162 个符号,但可以是 119 个符号的变体,也可能是其他长度; 它仅由以下字符组成:[0-9a-zA-Z\-\_]*
每个 regID 都包含一个或两个“分隔符”:-(减号)或 _(下划线)
【讨论】:
GCM3 返回 registrationId 和其他字符 ex。 ':' 我的数据库中有两种长度。最多 162 个符号和一些 140 个符号。【参考方案2】:文档未指定任何模式,因此允许使用任何有效字符串。格式将来可能会改变;请不要针对 any 模式验证此输入,因为如果发生这种情况,这可能会导致您的应用中断。
与“registration_id”字段一样,大小的上限是 cookie 的最大大小,即 4K(4096 字节)。
【讨论】:
以上是关于是否有 GCM registrationId 模式?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 中升级应用程序后使用 GCM 的 RegistrationId