0

我正在尝试使用 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。这就说得通了。奇怪的是,当在两部手机上运行相同的代码时,它们都返回了相同的 id(模拟器返回的那个),之前从未运行过这个应用程序。

4

2 回答 2

3

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

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

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

于 2012-07-05T08:06:09.747 回答
-1

这实际上是我检查身份证的方式的一个错误。XGouchet,感谢您的回复。

于 2012-07-09T21:25:31.460 回答