後臺自動運行,按期記錄定位數據(Hbuilder監聽 app由前臺切換到後臺、切換運行環境的 監聽方法)

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

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

相關文章
相關標籤/搜索