Gcm手机注册错误

3
我正在尝试设置一个与GCM配合使用的应用程序,但每次都会出现phone_registration_error错误。根据Gcm文档,此错误的含义是:
Incorrect phone registration with Google. 
This phone doesn't currently support GCM.

但我不明白为什么我的设备不支持,我已经在真实的安卓设备和带有Google API的模拟器上进行了测试。
我的MainActivity:
    @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上的清单


手机正在运行哪个Android版本? - Givi
尝试在另一台具有更高Android版本的设备上使用应用程序,但并非所有设备都支持Google APIs。如果您运行模拟器,请创建一个带有Google APIs模拟器的Android版本,并在该模拟器上创建Google帐户。这在使用GCM时是必需的。 - JunR
在真实设备上我运行的是2.3.4版本,模拟器运行的是2.2版本,同时模拟器还有一个Google账户。 - just_trying_stuff
我使用版本为4.0的Google API创建了一个新的模拟器,现在我可以获取RegistrationID。这是否意味着它不能在Android 2.x上运行? - just_trying_stuff
更多的人(包括我)在Android 2.2设备上测试我的应用程序时遇到了这个问题:https://groups.google.com/forum/#!topic/android-gcm/UKwUPZMSqiM - Almer
3个回答

2
我有相同的问题,经过在互联网上搜索多天后,我在谷歌群组中注意到了这一点(https://groups.google.com/forum/#!topic/cerberus-support-forum/eJxOsYqkTxo),并尝试了它,对我来说完美无缺。
您的Google帐户存在问题,请尝试以下操作:
  • 进入 “设置” -> “应用程序” -> “管理应用程序” -> “全部”
  • 进入 “设置” -> “应用” -> “全部”(在较新版本中)
  • 选择“清除数据”选项“Google Play服务”和“Google服务框架”
  • 重新启动手机
然后从您的应用程序检查GCM id。
如果仍然不起作用,请从手机中删除所有Google帐户,重新启动手机,并再次添加帐户。
对我有效(在实施了许多来自互联网搜索的解决方案之后)。
希望对您有所帮助!

2

GCM只能在运行Android 2.2或更高版本的设备上使用。此外,只有安装有Google账户的设备才能使用GCM。这也是Google建议在清单中使用<uses-permission android:name="android.permission.GET_ACCOUNTS" />的原因,以确保设备拥有Google账户。


1
关于“GCM仅在设备上安装了Google账户才能工作”的说法,在最近的Android版本中已经不再成立。 - Jo Jo

0

我查看了你的清单文件,发现你忘记传递GooglePlay服务元数据了。

  1. 请确认你已将GooglePlay服务库链接到你的项目中

  2. 尝试在以下位置添加:

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

这对我很有效。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接