在我的应用中,我需要识别每个安装和用户。目前,我正在使用Settings.Secure.ANDROID_ID,sim serial和build serial的组合生成我的uuid。最近,我一直致力于将Google云消息集成到我的应用中。现在在我的数据库中,每个安装似乎有2个ID。使用GCM的令牌ID替换我当前的设备ID是一个好主意吗?哪一个更可靠?假设每次安装都有谷歌服务。
答案 0 :(得分:1)
我建议不要使用GCM令牌令牌ID作为应用程序或用户或设备的标识符。主要原因是Google不保证它对于给定的设备保持不变。因此,谷歌甚至有可能在某些时候重新循环这些ID - 虽然不太可能,但GCM文档中没有任何内容表明这种情况不会发生。
通常认为定期使用GCM重新注册您的设备是个好主意:(请参阅Register a device on GCM every time the app start is the right approach?)。这使得最终您的应用的GCM令牌可能更改的可能性更大。同样,GCM文档也没有承诺它对于给定的设备始终保持不变。
如果您需要唯一标识应用安装,请采用以下方法:http://android-developers.blogspot.com/2011/03/identifying-app-installations.html。
最后一句警告你的方法。如果我正确读取,您正在以某种方式使用SIM卡ID。请注意,这不会出现在所有设备(例如平板电脑)中。
答案 1 :(得分:0)
我想建议您将gcm id和设备ID保存在单独的列中,两者都有不同的用途。 GCM ID对于通知目的非常有用,最好的方法是,每当用户从gcm服务器请求gcm id时,您都不会更新GCM ID。 要获得更多输出,您必须正确使用GCM类的属性。这是必需的代码。
public class GCMIntentService extends GCMBaseIntentService{
String value11,value22,value33,value44;
static String msg;
static Bitmap myBitmap,myBitmapy;
String arr[];
static String ns;
static NotificationManager myNotiMgr;
static Context cgh;
String type;
static String GOOGLE_SENDER_ID ="124545124542";
private static final String TAG = "GCMIntentService";
public GCMIntentService()
{
super(GOOGLE_SENDER_ID);
}
protected void onRegistered(Context context, String registrationId)
{
try
{
cgh=context;
Log.d("vddddddd",cgh+""+registrationId);
TelephonyManager tmw = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String imeie = tmw.getDeviceId();
new HttpAsynctask1().execute("http://url);
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
protected void onUnregistered(Context context, String registrationId)
{
}
@Override
protected void onMessage(Context context, Intent intent) {
String link = "";
try{
type = intent.getStringExtra("price");
Log.d("msgggg",type);
generateNotification(context, type);
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
protected void onDeletedMessages(Context context, int total)
{
}
@Override
public void onError(Context context, String errorId)
{
}
}
谢谢。