zoukankan      html  css  js  c++  java
  • 后台自动运行,定期记录定位数据(Hbuilder监听 app由前台切换到后台、切换运行环境的 监听方法)

    http://ask.dcloud.net.cn/question/28090

    https://blog.csdn.net/qq_37508970/article/details/86649703

    各位新年好

    小弟以前用hbuilder开发过几个项目,现在有一新需求项目,在考虑是否使用它来实现:

    需要APP在后台能定期离线监控用户定位数据,使用的是百度地图,我已经知道可以离线获取定位信息,但不知道如何能后台运行(APP不关闭,切换到后台,或者熄屏后它能继续运行),在后台定期(如20分钟)获取用户当前的位置,并记录在本地(如localstorage),然后上线时向服务器提交这些数据。

    想请教各HBUILDER大神,或者DCLOUD的技术员们,这个是否可行,并且有没最简便的方法(如不需要触碰原生插件开发是最好),需支持android与IOS,谢谢。

    2017-02-04 17:38  分享
    Sychel

    Sychel

    app的事件有pause和resume,你可以在pause时候启动你的位置监听服务。但是Android会杀进程,需要在系统里面手动设置一下。但是demo用下来感觉不稳定。内存占用也相当大。
    附赠一段以前写的测试小demo

    复制代码//后台运行监听器  
    document.addEventListener("pause",function(){  
        if(interval==null){  
          interval = setInterval("listenner()",10000);  
        }  
    });  
    //回到前台监听器,添加回到程序运行的事件,清除监听器  
    document.addEventListener("resume", function(){  
        window.clearInterval(interval);  
        interval = null;  
    }, false );  
    /**  
     * 定时监听服务  
     */  
    function listenner(){  
        //先获取当前地理位置  
        plus.geolocation.getCurrentPosition(function(pos){  
            //后台实时定位交互  
                    //------交互逻辑  
            //拿到数据之后提示  
            plus.push.createMessage("提示标题","{text:"回执的json数据"}",{title:"测试":附近有好玩的地方哦~",cover:true});  
                   //播放一段提示语音  
            plus.audio.createPlayer("_www/audio/scenicAlert.wav").play(function(){  
                plus.audio.createPlayer("_www/audio/lookAlert.wav").play();  
            });  
        },function(e){  
            console.log("Gelocation Error: code - "+e.code+"; message - "+e.message);  
        },{timeout:5000,provider:'baidu'});  
    }  
     
    啸天

    啸天

    我来说下我的痛苦经历(IOS),Android 因为非原生,也做不到所谓的双进程保活,这里略过:

    1.HBuilder 打包的IOS应用并不能做到后台长久保活,即使你设置了后台定位,原因是DCloud的云端打包机没有支持

    1. 设置,隐私,定位,更改为始终,还是不能做到长久保活

    所以后来采取这样的方法:

    1.manifest.xml 里配置后台运行模式,配置后台定位、后台播放音乐

    1. js 代码做定时任务,播放无声音乐,每2分钟播放 1秒(保证到了后台3分钟的时效时,重新激活下应用,再次延长3分钟)
    2. 安装到IOS上后,手动去设置里,隐私,定位,更改为始终

    以上就这些,如果是IOS离线打包的,可以做到后台长久定位,至于Android 的,就我手头的华为、小米、魅族机器来测试看,微信、QQ也并不是真正的双进程保活,之所以杀不掉,是被厂商加入了白名单(华为),小米机器一杀一个准

     
    Sychel

    Sychel

    对了,主动后台运行,iOS貌似不可以,年代太久记不清了。Android如下:

    复制代码/**  
     * 后台运行  
     */  
    function backRunning(){  
        var main = plus.android.runtimeMainActivity();  
        main.moveTaskToBack(false);  
    }  
     
    • pango (作者)

      谢谢回复,我之前查好像IOS有一个叫UIbackendmode的东西,不知道是否可行,让APP进入后台(熄灭屏幕)后能定期监听位置

      2017-02-04 19:06

       

       

       

       

       

      --------------------------------------------------------------------------------------------------------------------------------

       

      "pause" : 运行环境从前台切换到后台事件

      document.addEventListener("pause", pauseCallback, capture);
      1
      tips: 当app从前台切换到后台时会触发此事件。 若应用需要处理从前台切换到后台的事件行为,可通过注册事件监听器来监听“pause”事件,此事件需要在plusready事件后通过document进行注册。

      "resume": 运行环境从后台切换到前台事件

      document.addEventListener("resume", resumeCallback, capture);
      1
      tips: 当app从后台切换到前台时会触发此事件。 若应用需要处理从后台切换到前台的事件行为,可通过注册事件监听器来监听“resume”事件,此事件需要在plusready事件后通过document进行注册。

      此文章,参考Hbuilder官方文档:http://www.html5plus.org/doc/zh_cn/events.html#plus.Events.%22resume%22

  • 相关阅读:
    第二十一章流 1流的操作 简单
    第二十章友元类与嵌套类 1友元类 简单
    第十九章 19 利用私有继承来实现代码重用 简单
    第二十章友元类与嵌套类 2嵌套类 简单
    第十九章 8链表类Node 简单
    第二十一章流 3用cin输入 简单
    第十九章 10 图书 药品管理系统 简单
    第十九章 11图书 药品管理系统 简单
    第二十一章流 4文件的输入和输出 简单
    第十九章 12 什么时候使用私有继承,什么时候使用包含 简单
  • 原文地址:https://www.cnblogs.com/zouhao/p/10532576.html
Copyright © 2011-2022 走看看