http://ask.dcloud.net.cn/question/28090javascript
https://blog.csdn.net/qq_37508970/article/details/86649703html
各位新年好html5
小弟之前用hbuilder开发过几个项目,如今有一新需求项目,在考虑是否使用它来实现:java
须要APP在后台能按期离线监控用户定位数据,使用的是百度地图,我已经知道能够离线获取定位信息,但不知道如何能后台运行(APP不关闭,切换到后台,或者熄屏后它能继续运行),在后台按期(如20分钟)获取用户当前的位置,并记录在本地(如localstorage),而后上线时向服务器提交这些数据。android
想请教各HBUILDER大神,或者DCLOUD的技术员们,这个是否可行,而且有没最简便的方法(如不须要触碰原生插件开发是最好),需支持android与IOS,谢谢。json
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.manifest.xml 里配置后台运行模式,配置后台定位、后台播放音乐
以上就这些,若是是IOS离线打包的,能够作到后台长久定位,至于Android 的,就我手头的华为、小米、魅族机器来测试看,微信、QQ也并非真正的双进程保活,之因此杀不掉,是被厂商加入了白名单(华为),小米机器一杀一个准
对了,主动后台运行,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
1254201467@qq.commarkdown
大神,求demoapp
2018-03-07 18:25