GCM每次都发送不同的RegistrationId

时间:2014-11-11 16:49:20

标签: android google-cloud-messaging

我对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 是正常还是我正在做的事情都会收到。

非常感谢!

1 个答案:

答案 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   停止工作。