在我看来,不推荐使用函数gcm.register()。我可以使用InstanceID.getToken()代替...
我按照here所述使用它 但每次我运行应用程序时,我都会获得新的RegID(实例ID)..
这里我是如何注册的:
@Override
protected String doInBackground(Object[] voids) {
String msg = "";
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(MyApp.getContext());
}
InstanceID instanceID = InstanceID.getInstance(context1);
EntryActivity. regid = null;
try {
EntryActivity.regid = instanceID.getToken(ConstantsGCM.senderID_ProjectID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Log.d("REG---", "========================>>>- regid= " + EntryActivity.regid);
} catch (IOException e) {
e.printStackTrace();
}
if (EntryActivity.regid != null)
try {
storeRegistrationId(context1, EntryActivity.regid);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Log.d("REG---", "- " + msg + "regid= " + EntryActivity.regid);
return msg;
}
然后我发送了#34; regid"到我的服务器并将其保存到数据库,直到现在everythig工作正常,但当我通过GCM向服务器发送消息时(gcm.send(...);) 并打电话给"来自"消息的字段(在服务器端)我得到一个不同的regID,每次我重新启动应用程序并发送我获得新的regID(对于每个实例,regId更改)。
如何使用Instance ID作为常量RegID,我阅读了文档,但没有强调如何!