0

私はcordovaGeolocationリンクを試していました。同じコードをアプリに挿入しました。アプリが開いているときは問題なく動作します。この地理位置情報を取得して、アプリがバックグラウンドにある間にサーバーに送信する必要があります。ドキュメントリンク

  1. 私はジオロケーションを取得しており、アプリが開いているときにサーバーへの送信が正常に機能しています。
  2. ネイティブ Android のように、アプリの状態にも onpause と onresume cordova を使用しました。
  3. アプリが一時停止中の場合、onactivate() 内でバックグラウンド enable() を使用し、間隔を指定して地理位置情報を取得し、サーバーに送信しました。
  4. アプリが一時停止して再開に戻ると、アプリは地理位置情報を取得し、サーバーに完全に送信します。

 app.run(['$rootScope', '$location','$mdToast','$cordovaPush', '$sessionStorage', '$cordovaDevice',
 '$cordovaLocalNotification', '$timeout','$cordovaGeolocation','$interval','Service',
  function($rootScope, $location,$mdToast,$cordovaPush, $sessionStorage, $cordovaDevice,
   $cordovaLocalNotification, $timeout,$cordovaGeolocation,$interval,Service) {
document.addEventListener("resume", function() {
               console.log("The application is resuming from the background");
  cordova.plugins.backgroundMode.disable();
           }, false);
           document.addEventListener("pause", function() {
                    console.log("The application is pausing to the background");
                    cordova.plugins.backgroundMode.enable();
                }, false);     
      var i=0;
      cordova.plugins.backgroundMode.onactivate = function () {
        console.log("notificationReceived");
      setInterval(function () {
        console.log("interval: "+ i++);
        var posOptions = {timeout:3000,enableHighAccuracy: false};
        $cordovaGeolocation
          .getCurrentPosition(posOptions)
          .then(function (position) {
            var GeoLocation=new Object();
            GeoLocation.geo_location_latitude=position.coords.latitude;
            GeoLocation.geo_location_longitude=position.coords.longitude;
            Service.CurrentService(GeoLocation).success(function(data){
              console.log(new Date());
              console.log("cur loc: "+JSON.stringify(data));
            }).error(function(data){
              console.log("error: "+JSON.stringify(data));
            })
          }, function(err) {
            console.log("Error: "+err);
          // here Position Error Occurs
            // error
          });
},60000);
     }
      })];

エラーは、アプリが閉じるか一時停止すると、位置エラーメッセージが表示されます:ジオロケーションを取得中にタイムアウトが発生し、サーバーにデータを送信していません。このコーディングを参照して、これを完了するようにガイドしてください。前もって感謝します。

4

1 に答える 1