GCM"注册ID"没有注册了

时间:2014-08-24 14:10:24

标签: android google-cloud-messaging

我按照Google GcmClient应用中给出的步骤生成了存储在我的SharedPrefs中的registrationId。 这样,只有在更改appVersion时才会重新生成register-id。

此reg-id发送到我的服务器(基于Rails),通知通过GCM gem(https://github.com/spacialdb/gcm)发送到Android设备。

问题:有时服务器会收到“未注册”的响应,尽管相同的register-id在失败前几分钟就已经工作了。

当发生这种情况时,我试图“清除数据”,新生成的reg-id与上一个不同... 注册ID是否可能在未更新应用程序的情况下过期(当然我不会取消注册)?

我阅读了有关类似问题的帖子并对其进行了搜索,但仍无法确定所有这些问题的常见原因。 当我从GoogleStore(生产中)下载应用程序而不更新应用程序时,也出现了这个问题。

注册到GCM的主要方法:

public static void register(Context context, IGcmRegisterationListener listener) {
    try {
        MyLog.v("GcmClient: Registering for GCM...");
        Context appContext = context.getApplicationContext();
        // Check device for Play Services APK. If check succeeds, proceed with
        //  GCM registration.
        if (checkPlayServices(appContext)) {
            MyLog.v("GcmClient: Looking for GCM regId locally");
            String currentRegId = getRegistrationIdFromPrefs(appContext);

            if (currentRegId == null) {
                MyLog.v("GcmClient: GCM regId not found.");
                registerInBackground(appContext, listener);
            }
            else {
                MyLog.v("GcmClient: GCM regId found: " + currentRegId);
                listener.onGcmRegistered(context, currentRegId);
            }
        } else {
            MyLog.i("GcmClient: No valid Google Play Services APK found.");
            listener.onGcmRegistrationFailed();
        }
    } catch (Exception ex) {
        MyLog.i("GcmClient: GCM registration failed: " + Log.getStackTraceString(ex));
        listener.onGcmRegistrationFailed();
    }
}

0 个答案:

没有答案