Android中的谷歌云消息低于4.1

时间:2013-07-17 19:02:53

标签: android request google-cloud-messaging

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

我也有平板电脑(华硕变压器T101运行android 4.03)和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)......我知道Google没有回复

正如我所说,它适用于具有android 4.2.2和4.1的设备,权限是正确的,但不适用于Android 4.0.3及更低版本。

我感谢任何帮助。

谢谢和问候

1 个答案:

答案 0 :(得分:1)

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

查看API文档仍然是一项要求

  

移动设备运行使用GCM的Android应用程序的设备。这必须是安装了Google Play商店的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。