GCM帐户到期

时间:2013-05-22 13:25:51

标签: android google-cloud-messaging

我正在使用GCM服务开发一个小应用程序。

之前,我尝试向自己发送一条消息,但(服务器端)答案是:

  

“成功”:0, “失败”:1, “canonical_ids”:0 “结果”:[{ “错误”: “NotRegistered”}]}

但是在我的应用程序开始时,我检查一下:

final String regId = GCMRegistrar.getRegistrationId(this);  if (regId.equals("")) 
        {
                //  Register
            GCMRegistrar.register(this, SENDER_ID);


        } 
        else ...

似乎很明显getRegistrationId()只能在本地工作,(SharedPreferences?)..

好消息是我从来没有取消注册我的应用程序,只是重新安装它,而不是更改版本号(因为它仍然在测试中),所以在这种情况下我的帐户已经过期,在这种情况下谷歌不应该发送给我另一个我可以在这里找到的身份:

@Override
    protected void onRegistered

???

但是,有一种安全的方法可以了解我的应用是否已注册GCM服务器端?

谢谢!


编辑:

我在想这个:

当我通过Eclipse重新安装我的应用程序时,有一段时间没有安装我的应用程序,如果GCM服务器在那一刻发送消息没有接收器,那么谷歌取消了我的ID。 你认为这个想法是一个愚蠢的想法吗?

2 个答案:

答案 0 :(得分:0)

按照以下步骤http://developer.android.com/google/gcm/gs.html

可能会发生这种情况,因为某些时间gcm注册ID已过期,所以每次你应该检查它是否已注册,如果没有注册它

答案 1 :(得分:0)

您应该只注册一次设备。以某种方式保存registrationId(共享偏好是一个好的)并使用它。

来自文档:

  

注册GCM申请并返回注册ID。 安装应用程序后,必须调用此项,并将返回的注册ID发送到服务器。

在我做过的一些测试中,gcm.register(id)返回的注册ID对于设备,应用程序对并不总是相同。不过,谷歌说:

  

重复调用此方法将返回原始注册ID。

如果方法gcm.register(id)返回一个id,那么它将一直有效。

最佳。