2012-07-04 50 views
0

我想使用GCM,除差分设备上的GCMRegistrar.getRegistrationId调用外,一切正常。我在模拟器上运行了这段代码,并且2个不同的手机和GCMRegistrar.getRegistrationId总是返回相同的字符串。我预计它会在每个设备上有所不同,但事实并非如此。难道我做错了什么?这是我正在使用的代码(取自文档)。Android GCM-每次在不同的设备上注册相同的注册ID

GCMRegistrar.checkDevice(context); 
final String regId = GCMRegistrar.getRegistrationId(context); 
if (regId.equals("")) { 
    GCMRegistrar.register(activity, "123456789012"); //sender id/api project id 
} else { 
    LogUtil.info("Already registered"); 
} 

当我第一次跑这在模拟器上GCMRegistrar.getRegistrationId返回“”但在随后的调用返回大的ID。这就说得通了。奇怪的是,当在两部手机上运行相同的代码时,它们都返回了相同的ID(模拟器返回的那个),从未运行过此应用程序。

回答

-1

这实际上证明我是如何检查身份证号码的错误。 XGouchet,谢谢你的回应。

3

据我所知,注册ID用于匹配用户+设备。在仿真器上,您没有任何用户帐户,并且设备是虚拟的,所以我的猜测是注册认为两个虚拟设备都是相同的。

我不知道他们用什么来创建注册ID,但如果他们使用ANDROID_ID,这是一个已知的问题,即所有虚拟设备都具有相同的ID。

另外这是一个已知的问题,即一些制造商为其所有设备使用相同的设备ID,尽管它应该是唯一的。但也许他们正在使用别的东西。也许你应该试着问这个问题GCM support