地図上で友達を見つけるためのソーシャルネットワークであるcordovaにAppを作成します。ジオロケーションは、アプリケーションがフォアグラウンドにあるときに正常に機能します(cordova-plugin-geolocationプラグインを使用)。 しかし、アプリがバックグラウンドにあるときにも機能したいと思っています。これを行うには、私はこのように働いて、コルドバ・プラグイン・バックグラウンド・モードを使用しています:私は一時停止中にアプリを入れたとき、私は私でこれを持っているので、cordova - 地理的位置情報がアプリの背景にタイムアウトする
var geolocID;
window.onload = function(){
document.addEventListener("deviceready", init, false);
document.addEventListener("resume", function() { console.log("resume with id :" + geolocID); navigator.geolocation.clearWatch(geolocID); init();},false);
document.addEventListener("pause", geolocBackground,false);//function() {setTimeout(function(){console.log("TEST");},5000)},false);
}
function geolocBackground()
{
console.log("In geolocaBackground " + ", ID = " + geolocID);
navigator.geolocation.clearWatch(geolocID);
console.log("ID = " + geolocID);
geolocID = navigator.geolocation.watchPosition(positionSuccessBackground,positionError,{timeout: 5000});
console.log("Geolocation end");
}
function init()
{
geolocID = navigator.geolocation.watchPosition(positionSuccess, positionError, {enableHighAccuracy: true, timeout: 60000, frequency: 10000});
cordova.plugins.backgroundMode.enable();
cordova.plugins.backgroundMode.onactivate = function(){console.log("Backgound mode activated");
cordova.plugins.backgroundMode.configure({silent: false});
};
cordova.plugins.backgroundMode.ondeactivate = function() {console.log("Backgound mode disabled");};
}
bacgkoundモードが働くようですコンソール:
In geolocaBackground , ID = 707e54f8-fb99-fb36-2855-341b45f3d774
ID = 707e54f8-fb99-fb36-2855-341b45f3d774
Geolocation end
resume with id :707e54f8-fb99-fb36-2855-341b45f3d774
しかし、ジオロケーションがタイムアウトエラー、コード3を返し、動作しませんでした... 私は私のコードが間違っているのか理解していない、私はウェブ上で何かを見つけることができませんでした。アプリはバックグラウンドで携帯電話の位置情報にアクセスできないようです。コードは実行されますが、機能しない唯一のロケーション関数です。もし誰かがこの問題に関するいくつかの知識を持っていれば、それは非常に高く評価されます:) あなたのお手伝いをありがとう
あなたの答えは問題を説明しますが、解決策を提示しません(おそらくタイミングのため)。そのバグレポートのコメントは、https://github.com/Geotab/cordova-background-watchpositionに役立った解決策を示しています。答えを更新してください。 –