我对Android的GCM
服务有一点“问题”。
关键是,每次我要求registration_id时,GCM
服务器都会返回不同的registration_id 。最糟糕的是,经过测试,旧的和新的都正常工作! (我发送一条PUSH消息给旧的和新的消息,我的应用程序正在接收每个人的推送!!)。
这是AsyncTask
我在GCM
Android服务器中使用该注册表:
public class AltaGCM extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
int contador = 0;
try{
regId = gcm.register(CrisolGooglePlayServicesUtils.SENDER_ID);
} catch (IOException e) {
statusCode = -1;
}
return null;
}
@Override
protected void onCancelled() {
}
@Override
protected void onPreExecute() {
}
@Override
protected void onPostExecute(Void result) {
listener.respuestaGCM(statusCode, regId);
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
我不知道我做错了什么,但是,这种情况发生在我身上2个月(或多或少)。在我从未遇到过这个问题之前,GCM
服务器曾经给我发回 SAME registration_id (不是每次都有,但有时候).......
我不知道每次不同的registration_id 是正常还是我正在做的事情都会收到。
非常感谢!
答案 0 :(得分:1)
GCM registering with two different working registration ids
可能重复查看@nunofmendes提供的答案
有时Google会更改注册ID,您将拥有多个注册ID ID相关联。发送通知的服务器(您的服务器) 必须使用新ID更新数据库。
有关详细信息,请查看此文档:
http://developer.android.com/google/gcm/adv.html
那说:
在服务器端,只要应用程序运行良好, 一切都应该正常工作。但是,如果应用程序中存在错误 触发同一设备的多次注册,可能很难 协调状态,你可能会得到重复的消息。
GCM可以轻松提供名为“规范注册ID”的工具 从这些情况中恢复。定义了规范注册ID 是您的申请所要求的最后一次注册的ID。 这是服务器在向邮件发送邮件时应使用的ID 设备
如果稍后您尝试使用其他注册发送消息 ID,GCM将照常处理请求,但它将包括 规范注册ID在registration_id字段中 响应。确保替换存储在您的注册ID 具有此规范ID的服务器,因为最终您正在使用的ID 停止工作。