3

我正在尝试设置一个与 gcm 一起使用的应用程序,但每次根据 Gcm 文档收到 phone_registration_error 错误时,此错误意味着:

Incorrect phone registration with Google. 
This phone doesn't currently support GCM.

但我不明白为什么我的它不受支持,我在一个真正的 android 设备和一个带有 google api 的模拟器上测试了这个

我的主要活动:

    @Override
public void onCreate(Bundle savedInstanceState) {
    checkNotNull(SENDER_ID, "SENDER_ID");

    GCMRegistrar.checkDevice(this);
    GCMRegistrar.checkManifest(this);

    final String regId = GCMRegistrar.getRegistrationId(this);
    Log.i(TAG,  "registration id =====  "+regId);
    if(regId.equals("")){
        GCMRegistrar.register(this, SENDER_ID);

    } else {
        Log.v(TAG, "Already Registred");
    }

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

}

我的清单:

pastebin 上的清单

4

3 回答 3

2

我遇到了同样的问题,在互联网上搜索了很多天后,我在谷歌群组(https://groups.google.com/forum/#!topic/cerberus-support-forum/eJxOsYqkTxo)中注意到了这一点并尝试了它并它对我来说完美无缺。

您的 Google 帐户有问题。请试试这个:

  • 转到设置 -> 应用程序 -> 管理应用程序 -> 全部

或者

转到设置-> 应用程序-> 全部(在较新版本上)

  • 为“Google Play 服务”和“Google 服务框架”选择“清除数据”
  • 重启手机

然后从您的应用中检查 GCM id。

如果它仍然不起作用,请从手机中删除您的所有谷歌帐户并重新启动手机并再次添加该帐户。

它对我有用(在实施了我通过搜索互联网获得的许多解决方案之后。)

希望能帮助到你!!

于 2015-03-03T07:04:48.080 回答
2

GCM 仅适用于运行 android 2.2 或更新版本的设备。此外,GCM 仅在为设备安装了 google 帐户时才有效。这也是 google 建议<uses-permission android:name="android.permission.GET_ACCOUNTS" />在清单中使用的原因,因此您可以确定设备具有 google 帐户。

于 2012-11-19T09:58:59.703 回答
0

我查看了您的清单,但您忘记传递 GooglePlay 服务元数据。

  1. 验证您是否已将 GooglePlay 服务库链接到您的项目

  2. 尝试将此添加到您的

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>

它对我很有效。

然后重新编译并重试。希望能帮助到你。

于 2016-06-30T08:59:44.297 回答