今天我学习了关于GCM服务器的内容。在developer.android.com中阅读GCM部分的内容后,我仍然不确定如何在第三方服务器上管理注册ID。我的理解是:
- 安卓应用程序可以从GCM服务器注册和注销ID。
- 服务器端可以使用注册ID和服务器密钥向设备发送消息。
那么,我应该如何从GCM服务器获取设备注册ID?是否需要直接从安卓设备中获取?
感谢您的建议。
今天我学习了关于GCM服务器的内容。在developer.android.com中阅读GCM部分的内容后,我仍然不确定如何在第三方服务器上管理注册ID。我的理解是:
那么,我应该如何从GCM服务器获取设备注册ID?是否需要直接从安卓设备中获取?
感谢您的建议。
学习基本信息的最佳地方是在 developer.android.com 的这里。
在他们的教程中,你将看到以下示例代码:
/**
* Registers the application with GCM servers asynchronously.
* <p>
* Stores the registration ID and app versionCode in the application's
* shared preferences.
*/
private void registerInBackground() {
new AsyncTask() {
@Override
protected String doInBackground(Void... params) {
String msg = "";
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(context);
}
regid = gcm.register(SENDER_ID);
msg = "Device registered, registration ID=" + regid;
// You should send the registration ID to your server over HTTP,
// so it can use GCM/HTTP or CCS to send messages to your app.
// The request to your server should be authenticated if your app
// is using accounts.
sendRegistrationIdToBackend();
// For this demo: we don't need to send it because the device
// will send upstream messages to a server that echo back the
// message using the 'from' address in the message.
// Persist the registration ID - no need to register again.
storeRegistrationId(context, regid);
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
// If there is an error, don't just keep trying to register.
// Require the user to click a button again, or perform
// exponential back-off.
}
return msg;
}
@Override
protected void onPostExecute(String msg) {
mDisplay.append(msg + "\n");
}
}.execute(null, null, null);
...
}
sendRegistrationIdToBackend()
方法中定义此操作。首先,您将无法从GCM服务器获得任何注册号码。您只能从Google开发人员控制台获取项目ID
和应用程序密钥
。 您必须使用客户端应用程序创建注册ID。 您需要编写一些代码来创建注册ID。 您可以参考this link。 在这里,它被很好地解释了。
获取 Android 设备的 GCM ID,您需要遵循以下步骤。每个设备都会为每个应用程序分配唯一的 GCM ID。