android – GCM注册:移动网络上不提供服务

android – GCM注册:移动网络上不提供服务,第1张

概述我在GCM注册期间收到服务不可用. 奇怪的是,当设备在Wifi上时,代码运行正常.当它在移动网络上时几乎总是失败(90%). 互联网上的移动数据工作正常,其他服务器 *** 作正在运行,虽然它们比Wifi慢一点. 我尝试添加一个简单的循环(不是指数等待)以在睡眠间隔后继续重试,但没有运气. 片刻我在 *** 作(GCM注册)上切换Wifi成功. 请帮忙. ****更新更多信息** **:我在我的设备上测试了GCM 我在GCM注册期间收到服务不可用.

奇怪的是,当设备在Wifi上时,代码运行正常.当它在移动网络上时几乎总是失败(90%).

互联网上的移动数据工作正常,其他服务器 *** 作正在运行,虽然它们比Wifi慢一点.

我尝试添加一个简单的循环(不是指数等待)以在睡眠间隔后继续重试,但没有运气.

片刻我在 *** 作(GCM注册)上切换Wifi成功.

请帮忙.

****更新更多信息** **:我在我的设备上测试了GCM Demo,它也有同样的问题.移动数据失败,在Wifi上运行良好.
失败的设备是注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");                    }

显示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解决了他的问题并在评论中写了解决方案.解:

问题解决了.在我的手机上,“Google服务”已设置“限制后台数据”.这就是Wifi关闭时“Google服务框架”或“Google Play服务”无法使用的原因.一旦我取消限制,我开始工作正常!

前往设置

寻找数据使用

寻找“Google Play服务”

当您进入另一个屏幕时:

>菜单>限制BackgroundData(检查是否已选中并取消选中它.)

总结

以上是内存溢出为你收集整理的android – GCM注册:移动网络上不提供服务全部内容,希望文章能够帮你解决android – GCM注册:移动网络上不提供服务所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1141115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存