草庐IT

android - GCM 注册 : SERVICE NOT AVAILABLE on mobile network

coder 2023-12-14 原文

我在 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 服务”

当您进入另一个屏幕时:

  1. 菜单
  2. 限制 BackgroundData(检查是否选中并取消选中。)

关于android - GCM 注册 : SERVICE NOT AVAILABLE on mobile network,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22877855/

有关android - GCM 注册 : SERVICE NOT AVAILABLE on mobile network的更多相关文章

  1. 阿里云国际版免费试用:如何注册以及注意事项 - 2

    作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。​关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐

  2. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  3. ruby-on-rails - 设计注册确认 - 2

    我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,:

  4. ruby-on-rails - 特征未注册 : attribute name - 2

    完成这个有困难。我正在使用seed.rb+factory_girl来使用rakedb:seed填充数据库。(我知道固定装置存在,但我想以这种方式完成,这只是一个示例,数据库将填充复杂的关联对象。)我的种子.rb:require'factory_girl_rails'["QM","CDC","SI","QS"].eachdo|n|FactoryGirl.create(:grau,nome:n)end还有我的/factories/graus.rbFactoryGirl.definedofactory:graudonomeendend但是当我运行时:rakedb:seed我得到:rakeab

  5. ruby-on-rails - 带有自定义处理器的 CarrierWave 未注册 - 2

    我正在使用carrierwave上传视频然后有一个名为thumb的版本,带有自定义处理器,可以获取视频并使用streamio-ffmpeg创建屏幕截图。视频和文件都已正确上传,但在调用uploader.url(:thumb)时我得到:ArgumentError:Versionthumbdoesn'texist!VideoUploader.rbrequire'carrierwave/processing/mime_types'require'streamio-ffmpeg'classVideoUploader5)File.renamethumb_path,current_pathendd

  6. ruby-on-rails - 如何访问设计 token 授权注册 Controller ? - 2

    我正在使用Deviseauthtokengem用于验证我的Rails应用程序的某些部分。但是,当我尝试使用注册路径创建新用户时,出现以下错误{"errors":["Authorizedusersonly."]}。这是我用于测试的rspec代码,it'createsauserusingemail/passwordcombo'dopostapi_user_registration_path,{email:'xxx',password:'yyy',password_confirmation:'yyy'}putslast_response.bodyexpect(last_response.bo

  7. ruby - 如何将 Thor::Group 注册为带参数的子命令 - 2

    这道题开始于here.但随着我对雷神的了解越来越多,情况发生了很大变化。我正在尝试创建一个带参数的Thor::Group子命令。奇怪的是,如果没有参数,它就可以工作。我可以使用Thor::Group作为子命令吗?这在我输入时有效:foocounterfoo/bin/foomoduleFooclassCLI但是当我输入时这不起作用:foocounter5moduleFooclassCLI','Countupfromtheinput.')endclassCounter:numeric,:desc=>"Thenumbertostartcounting"desc"Prints2numbersb

  8. Ruby - 不支持的密码算法 (AES-256-GCM) - 2

    我收到错误:unsupportedcipheralgorithm(AES-256-GCM)(RuntimeError)但我似乎具备所有要求:ruby版本:$ruby--versionruby2.1.2p95OpenSSL会列出gcm:$opensslenc-help2>&1|grepgcm-aes-128-ecb-aes-128-gcm-aes-128-ofb-aes-192-ecb-aes-192-gcm-aes-192-ofb-aes-256-ecb-aes-256-gcm-aes-256-ofbRuby解释器:$irb2.1.2:001>require'openssl';puts

  9. ruby-on-rails - 在设计注册中保留查询字符串 - 2

    我正在使用railswithdevise进行注册。我还添加了一个邀请码,所以不是每个人都可以注册。邀请码通过“/users/sign_up?invite_code=wajdpapojapsd”之类的查询字符串传输,并使用“f.hidden_​​field:invite_code,:value=>params[”添加到注册表单的隐藏字段中:invite_code]".这很好用。唯一的问题是,如果注册没有得到验证和拒绝,设计重定向到“/users”并丢失带有invite_code的查询字符串。由于电子邮件在尝试失败后保留在注册表单中,我相信这也适用于邀请代码。作为最坏情况的解决方案,在注册

  10. ruby-on-rails - Rails 4 - 设计:在注册时获取 ActionController::UnknownFormat - 2

    我有一个Rails4.2.3应用程序,我在其中使用Devise进行用户身份验证。我在Bootstrap模式中展示我的注册表单。我已经实现了类似于:https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app.注册时我不断收到此错误:Completed406NotAcceptablein512033ms(ActiveRecord:5.8ms)ActionController::UnknownFormat(ActionController::Un

随机推荐