我正在关注GC this example工作正常,请告诉我服务器如何向每个寄存器设备发送消息如何唯一标识每个设备的机制。什么是SENDER_ID
什么是regId
服务器如何唯一地识别我的设备php服务器如何在没有SMS电子邮件服务的情况下向每个设备发送消息告诉我它的机制请知道它将如何工作
在这个应用程序中我很少这个
String SENDER_ID = "748495904142"
我从https://code.google.com/apis/console/?pli=1#project:748495904142:access
收到的final String regId = GCMRegistrar.getRegistrationId(this);
// Check if regid already presents
if (regId.equals("")) {
// Registration is not present, register now with GCM
GCMRegistrar.register(this, SENDER_ID);
} else {
// Device is already registered on GCM
if (GCMRegistrar.isRegisteredOnServer(this)) {
// Skips registration.
Toast.makeText(getApplicationContext(),"Already registered with GCM",
Toast.LENGTH_LONG).show();
} else {
// Try to register again, but not in the UI thread.
// It's also necessary to cancel the thread onDestroy(),
// hence the use of AsyncTask instead of a raw thread.
final Context context = this;
mRegisterTask = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
// Register on our server
// On server creates a new user
ServerUtilities.register(context, name, email, regId);
return null;
}
@Override
protected void onPostExecute(Void result) {
mRegisterTask = null;
}
};
}
}
答案 0 :(得分:1)
SENDER_ID是项目ID,服务器使用它来区分与服务器关联的不同项目。
REG_ID是服务器用于区分向服务器注册的不同移动设备的唯一ID。
现在,例如,相同移动设备与两个不同的项目相关联,并与同一服务器相关联,因此便于服务器区分这两个项目并将相应的消息发送到移动设备。
答案 1 :(得分:0)
当您在API控制台上注册项目时,您获得了项目的编号,该编号是SENDER_ID,您也可以从控制台获取API密钥。在android中执行时
final String regId = GCMRegistrar.getRegistrationId(this);
然后移动检查gcm注册,如果已经在gcm服务器上注册,那么它将返回一个regId。这些id对于不同的手机是不同的。 gcm服务器使用此注册ID识别您的移动设备。获得regid后,我们将其保存到我们的数据库中以备将来使用。在服务器端,我们只是将消息和注册ID发送到gcm服务器,gcm服务器使用注册ID识别电话并将通知发送到适当的移动设备。