0

我在我的应用程序中使用推送通知 (GCM),它在 android 4.2.2(Galaxy Nexus 和 HTC One)上运行时可以正常工作

我还有一台平板电脑(运行 android 4.03 的华硕变压器 T101)和 Nexus One(运行 Android 2.3.6)

在平板电脑和 Nexus 上运行应用程序,推送通知的方法不起作用。

如文档中所述,我已包含 android.permission.GET_ACCOUNTS 4.0.3 以下版本的权限,但没有成功。

调用 GCM 库的方法运行:

final String regId = GCMRegistrar.getRegistrationId(Hello.this);
        if (regId.equals("")) {
            GCMRegistrar.register(Hola.this, "MY_ID_SENDER"); //Sender ID           
        } else {
            Log.i("masterhv", "already registered");
        }

但是处理响应的方法没有执行(onRegistered)……我知道谷歌没有响应

正如我所说,它在 android 4.2.2 和 4.1 的设备上完美运行,权限正确,但在 android 4.0.3 及更低版本上不起作用。

我很感激任何帮助。

谢谢并恭祝安康

4

1 回答 1

1

使用旧版本的 GCM(大约 1-2 个月前已弃用),如果用户运行的版本低于 4.0.4,您必须要求用户添加 google 帐户

查看 API 文档它仍然是一个要求

移动设备 运行使用 GCM 的 Android 应用程序的设备。这必须是安装了 Google Play Store 的 2.2 Android 设备,并且如果设备运行的版本低于 Android 4.0.4,则必须至少有一个登录的 Google 帐户。或者,为了进行测试,您可以使用运行 Android 2.2 和 Google API 的模拟器。

GCM API

我没有使用最后一个版本。如果您决定使用旧的,则必须生成对帐户设置的访问权限才能添加帐户:

private String[] getAccountNames() {        
        AccountManager accMan = AccountManager.get(this);
        Account[] accArray = accMan.getAccountsByType("com.google");
        String[] names = new String[accArray.length];
        for (int i = 0; i < names.length; i++) {
            names[i] = accArray[i].name;
        }
    return names;
}

因此,如果数组为 0,您可以弹出一个对话框,要求移动到帐户设置。

如果您尝试注册没有帐户,您应该在 logcat 上看到一条消息错误 ACCOUNT_MISSING。

于 2013-07-17T19:28:01.137 回答