Android GCM:.register 函数需要服务器吗?
Posted
技术标签:
【中文标题】Android GCM:.register 函数需要服务器吗?【英文标题】:Android GCM: .register function need a server? 【发布时间】:2013-12-09 22:45:30 【问题描述】:我正在尝试在我的 android 应用程序上实现 google 的 GCM,但遇到了一个关于 .register() 函数的问题。
private void registerInBackground()
new AsyncTask<Void, Void, String>()
@Override
protected String doInBackground(Void... params)
String msg = "";
try
if (gcm == null)
gcm = GoogleCloudMessaging.getInstance(context);
regid = gcm.register(SENDER_ID);
Log.d(TAG, "registered gcm");
msg = "Device registered, registration ID=" + regid;
Log.d(TAG, "Current Device's Registration ID is: "+msg);
// 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.
// 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 regID - 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;
对于 regid = gcm.register(SENDER_ID);,应用程序将使用什么类型的连接发送到 GCM 以注册 SENDER_ID?是仅通过 wi-fi 进行,还是我需要建立服务器才能向 GCM 注册。我的主要问题是,客户端应用程序如何向 GCM 注册以获取该注册 ID?
【问题讨论】:
【参考方案1】:AFAIR,不,它不需要您身边的自定义服务器来接收Registration ID
。 Google 服务器将其发送到用户设备。您(您的自定义服务器)稍后将需要此 ID 来请求 Google 向用户设备发送推送通知。将使用这个特定的registration ID
来识别用户设备。所以你的服务器需要存储它。您可以将某种registration ID
映射到服务器端的某个友好名称。
简而言之,您需要一个自定义服务器,当用户设备从 Google 接收到注册 ID 时,您将向该服务器发送注册 ID。但是, (.register
) 功能不需要它。
【讨论】:
以上是关于Android GCM:.register 函数需要服务器吗?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 中升级应用程序后使用 GCM 的 RegistrationId
Android APP 从 GCM 迁移到 FCM。旧 GCM 令牌不起作用
Android 2.2 上的 GCM SERVICE_NOT_AVAILABLE