gpt4 book ai didi

android - Android 2.2 上的 GCM SERVICE_NOT_AVAILABLE

转载 作者:IT老高 更新时间:2023-10-28 23:26:46 28 4
gpt4 key购买 nike

我在 Android 2.2 设备上调用 GoogleCloudMessaging.register() 时收到错误“SERVICE_NOT_AVAILABLE”。

我正在使用新的 Google Play 服务编写一个使用 GoogleCloudMessaging 的应用程序。我使用 Android 网站上提供的指南实现了它,我的源代码包含许多错误检查和处理代码,例如确保安装或更新 Google Play 服务。 GCM 注册代码还按照 google 的建议实现了指数退避,以实现处理 SERVICE_NOT_AVAILABLE 错误。

我已经在各种设备上测试了我的应用程序,包括 ICS、JB、Honey Comb 甚至 2.3.x 设备。 GCM 注册有效,我可以通过 GCM 向它发送消息。但是,在 2.2 设备上,即使有指数退避,我也会在 GoogleCloudMessaging.register() 调用中不断收到 SERVICE_NOT_AVAILABLE 错误。

确切地说,GCM 失败的设备是三星 SGH-I896,手机上有 2 个谷歌帐户。我读过这个错误可能是由错误配置的时间引起的,但时间设置为自动。手机未进行调制,正在运行三星股票 ROM。

我也尝试过重新启动设备以及重新安装 Google Play 服务,但都没有成功。对此问题的任何帮助将不胜感激。

编辑:我尝试使用旧的 gcm.jar 和 GCMRegistrar 实现 GCM,它最终在设备上运行。但是我几乎不认为这是解决问题的好方法,因为 Google 已经停止支持这种方法了。

EDIT2:查看接受的答案。

最佳答案

我遇到了同样的问题。 GCM 在运行 Android 4.04 的平板电脑上运行良好,但在运行 Android 2.3 的智能手机上总是收到 SERVICE_NOT_AVAILABLE。

我发现以下解决方法不使用(据我所知)任何已弃用的类。将操作“com.google.android.c2dm.intent.REGISTRATION”添加到 list 中的 GCMBroadcastReceiver。这将使您能够在您的 GCMBroadcastReceiver 接收registration_id。

<receiver
android:name="YOUR_PACKAGE_NAME.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />

<category android:name="YOUR_PACKAGE_NAME" />
</intent-filter>
</receiver>

之后,您的 GCMBroadcastReceiver 就能够接收到 registration_id:

public void onReceive(Context context, Intent intent) {
String regId = intent.getExtras().getString("registration_id");
if(regId != null && !regId.equals("")) {
/* Do what ever you want with the regId eg. send it to your server */
}
}

虽然我仍然收到 SERVICE_NOT_AVAILABLE 错误,但我可以在 GCMBroadcastReceiver 中处理registration_id,并且可以向我的智能手机发送消息。很奇怪,但它对我有用。

关于android - Android 2.2 上的 GCM SERVICE_NOT_AVAILABLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17618982/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com