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 を返します。それは理にかなっている。奇妙なことに、2 台の電話で同じコードを実行すると、両方とも同じ ID (エミュレーターが返したもの) を返し、このアプリを以前に実行したことがありませんでした。

4

2 に答える 2

3

私が知っていることから、登録 ID はユーザーとデバイスを照合するために使用されます。エミュレーターでは、ユーザー アカウントはなく、デバイスは仮想であるため、登録では両方の仮想デバイスが同じであると考えられていると思います。

登録 ID の作成に何を使用しているかはわかりませんが、ANDROID_IDを使用する場合、すべての仮想デバイスが同じ ID を持つという既知の問題があります。

また、一意であるはずのデバイス ID をすべてのデバイスに使用しているメーカーもあるという既知の問題があります。しかし、おそらく彼らは何か他のものを使用しています。この特定の問題については、GCM サポートに問い合わせてみてください。

于 2012-07-05T08:06:09.747 に答える
-1

これは、実際には、ID のチェック方法に関する私の側の間違いであることが判明しました。XGouchet、あなたの応答に感謝します。

于 2012-07-09T21:25:31.460 に答える