如何识别设备令牌是用于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; }