http://ask.dcloud.net.cn/question/28090
後臺自動運行,按期記錄定位數據
分類:
HTML5+
各位新年好javascript
小弟之前用hbuilder開發過幾個項目,如今有一新需求項目,在考慮是否使用它來實現:java
須要APP在後臺能按期離線監控用戶定位數據,使用的是百度地圖,我已經知道能夠離線獲取定位信息,但不知道如何能後臺運行(APP不關閉,切換到後臺,或者熄屏後它能繼續運行),在後臺按期(如20分鐘)獲取用戶當前的位置,並記錄在本地(如localstorage),而後上線時向服務器提交這些數據。android
想請教各HBUILDER大神,或者DCLOUD的技術員們,這個是否可行,而且有沒最簡便的方法(如不須要觸碰原生插件開發是最好),需支持android與IOS,謝謝。json
13 個回覆
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'}); }
嘯天ui
我來講下個人痛苦經歷(IOS),Android 由於非原生,也作不到所謂的雙進程保活,這裏略過:
1.HBuilder 打包的IOS應用並不能作到後臺長久保活,即便你設置了後臺定位,緣由是DCloud的雲端打包機沒有支持
- 設置,隱私,定位,更改成始終,仍是不能作到長久保活
因此後來採起這樣的方法:
1.manifest.xml 裏配置後臺運行模式,配置後臺定位、後臺播放音樂
- js 代碼作定時任務,播放無聲音樂,每2分鐘播放 1秒(保證到了後臺3分鐘的時效時,從新激活下應用,再次延長3分鐘)
- 安裝到IOS上後,手動去設置裏,隱私,定位,更改成始終
以上就這些,若是是IOS離線打包的,能夠作到後臺長久定位,至於Android 的,就我手頭的華爲、小米、魅族機器來測試看,微信、QQ也並非真正的雙進程保活,之因此殺不掉,是被廠商加入了白名單(華爲),小米機器一殺一個準
對了,主動後臺運行,iOS貌似不能夠,年代過久記不清了。Android以下:
複製代碼/** * 後臺運行 */ function backRunning(){ var main = plus.android.runtimeMainActivity(); main.moveTaskToBack(false); }
1254201467@qq.comapp
大神,求demoide
2018-03-07 18:25測試