Android GCM - 每次在不同设备上注册ID相同

时间:2012-07-04 21:45:28

标签: android google-cloud-messaging

我正在尝试使用GCM,除了在差异设备上调用GCMRegistrar.getRegistrationId之外,一切正常。我在模拟器和2个不同的手机上运行此代码,GCMRegistrar.getRegistrationId始终返回相同的字符串。我希望它在每台设备上有所不同,但事实并非如此。难道我做错了什么?这是我正在使用的代码(取自文档)。

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。那讲得通。奇怪的是,当在2部手机上运行相同的代码时,他们都返回了相同的ID(模拟器返回的那个),之前从未运行过该应用程序。

2 个答案:

答案 0 :(得分:3)

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

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

另一个已知的问题是,一些制造商对其所有设备使用相同的设备ID,尽管它应该是唯一的。但也许他们正在使用别的东西。也许您应该尝试GCM support询问此特定问题。

答案 1 :(得分:-1)

这实际上是我在检查id的方面的错误。 XGouchet,谢谢你的回应。