如何识别设备令牌是用于Android还是iOS?

我在DB中存储Android和iOS设备令牌。 以下是设备令牌保存在数据库中的几个示例。

  • 359092050465370
  • 654C4DB3-3F68-4969-8ED2-80EA16B46EB0
  • 294913EC-6100-42E8-8C2D-E9F68F286ADE

如何区分特定设备令牌是用于Android还是iOS设备?

我建议您将其他信息与令牌一起发送到服务器。 例如,有关令牌从哪个设备类型注册的信息,即Android或iOS。 一个合适的解决方案是设置一个用于注册令牌的REST服务。 如果您实施此解决方案,您将来会certificate未来Android / iOS令牌长度的变化。 要存储的其他有用信息是用户ID或类似信息。

我假设您正在谈论您存储令牌的自己的数据库。

Iphone设备令牌

设备令牌为32字节二进制forms,对于iphone为32,对于android为15

您发布的第一个哈希是设备的IMEI,因此它出现在Android和iOs上。 IMEI只包含数字!

在Android上,如果使用以下代码,将为您提供一个唯一的ID: Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID); 看起来像那样: 9774d56d682e549c ,这是16个字符长。

在iOS设备上,您可以在iTunes或类似这样的网站上获取您的UDID: http : 294913EC-6100-42E8-8C2D-E9F68F286ADE这个UDID是32位数,看起来像这样: 294913EC-6100-42E8-8C2D-E9F68F286ADE

基于您在邮件中发布的IMEI,我们可以获取您的手机信息,如品牌,型号和许多其他内容。 看看那个地址: http : //www.imei.info/?mei = 359092050465370

您需要实施GCM才能这样做。

请点击此链接了解详细说明。

Google云消息传递

  String rid=GCMRegistrar.getRegistrationId(getApplicationContext()); 

获取IMEI (国际移动设备标识符):

 public String getIMEI(Activity activity) { TelephonyManager telephonyManager = (TelephonyManager) activity .getSystemService(Context.TELEPHONY_SERVICE); return telephonyManager.getDeviceId(); } 

获取设备唯一ID

 public String getDeviceUniqueID(Activity activity){ String device_unique_id = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID); return device_unique_id; }