作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 GCM 注册期间收到服务不可用。
奇怪的是,当设备连接到 Wifi 时,代码运行正常。在移动网络上几乎总是失败(90% 次)。
移动数据互联网运行良好,其他服务器操作正常,但与 Wifi 相比速度稍慢。
我尝试添加一个简单的循环(不是指数等待)以在 sleep 间隔后继续重试,但没有成功。
当我打开 Wifi 时,操作(GCM 注册)成功。
请帮忙。
****更新更多信息** **:我测试了GCM Demo在我的设备上,它也有同样的问题。在移动数据上失败,在 Wifi 上工作正常。失败的设备是 Note 3,目标版本是 4.4.2。奇怪的是,相同的代码在其他设备(版本 2.3.6)上运行良好
GCM 注册
try {
String sDeviceID=null;
if (checkPlayServices()) {
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
sDeviceID = getRegistrationId(context);
if (sDeviceID==null) {
for(int i=0;i<60;i++){
try{
sDeviceID= gcm.register(SENDER_ID);
break;
}catch(IOException e){
Thread.sleep(2000);
continue;
}
}
// Persist the regID - no need to register again.
storeRegistrationId(context, sDeviceID);
}
sDeviceID = getRegistrationId(context);
if (sDeviceID==null) {
error=true;
throw new Exception("GCM Error");
}
list XML
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.planetapp.schoolink" />
</intent-filter>
</receiver>
<service android:name="com.planetapp.schoolink.GCMIntentService" />
广播接收器
public class GCMBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("++++++++++++ON RECEIVE");
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 */
System.out.println("++++++++++++ID RECEIVED++++++++++++"+regId);
}
}
最佳答案
OP 解决了他的问题并在评论中写下了解决方案。解决方案:
问题已解决。在我的手机上,“谷歌服务”勾选了“限制后台数据”设置。这就是关闭 Wifi 时“Google 服务框架”或“Google Play 服务”不可用的原因。取消限制后,我就开始正常工作了!
进入设置
寻找数据使用情况
寻找 “Google Play 服务”
当您进入另一个屏幕时:
关于android - GCM 注册 : SERVICE NOT AVAILABLE on mobile network,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22877855/
我是一名优秀的程序员,十分优秀!