2016-12-19 7 views
0

私のプロジェクトではバックグラウンドモードのプラグインを使用しています。Cordova - イオンバックグラウンドモードプラグインでの問題

デバイスが[deviceready mode]になっているときに、デバイスのジオロケーションをデータベースに挿入します。

ユーザーが[バックグラウンド/一時停止]モードに切り替わると、デバイスのジオロケーションはデータベースに挿入されません。

ジオロケーションは、3秒ごとにデータベースに挿入されます。

デバイスモードを[バックグラウンド]モードに切り替えると、データベースにジオロケーションを挿入したままになります。

問題が何ですか?

var app = angular.module('starter', ['ionic', 'ngCordova']); 
 
var globLat; 
 
var globLong; 
 
var db = null; 
 

 
app.run(function ($ionicPlatform, $cordovaSQLite) { 
 
    $ionicPlatform.ready(function() { 
 
    if (cordova.platformId === "ios" && window.cordova && window.cordova 
 
     .plugins.Keyboard) { 
 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
 
     cordova.plugins.Keyboard.disableScroll(true); 
 
    } 
 

 
    if (window.StatusBar) { 
 
     StatusBar.styleDefault(); 
 
    } 
 

 
    db = window.openDatabase("mobileDB", "1.0", "Cordova Demo", 
 
     200000); 
 
    $cordovaSQLite.execute(db, 
 
     "CREATE TABLE IF NOT EXISTS coords (latDB float , longDB float)" 
 
    ); 
 
    /* 
 
    var query = "INSERT INTO coords (latDB, longDB) VALUES (?,?)"; 
 
    $cordovaSQLite.execute(db, query, [globLat, globLong]); */ 
 

 
    document.addEventListener("deviceready", onDeviceReady, false); 
 

 
    function onDeviceReady() { 
 

 
     setInterval(function() { 
 
     var query = 
 
      "INSERT INTO coords (latDB, longDB) VALUES (?,?)"; 
 
     $cordovaSQLite.execute(db, query, [globLat, globLong]); 
 

 
     }, 3000); 
 
    } 
 

 
    }); 
 

 
}) 
 

 
app.controller('GeoCtrl', function ($cordovaGeolocation, $cordovaSQLite) { 
 

 
    var posOptions = { 
 
    timeout: 10000, 
 
    enableHighAccuracy: false 
 
    }; 
 
    $cordovaGeolocation 
 
    .getCurrentPosition(posOptions) 
 
    .then(function (position) { 
 
     var lat = position.coords.latitude 
 
     var long = position.coords.longitude 
 

 
     globLat = lat; 
 
     globLong = long; 
 

 
     // alert("latitude is : " + globLat + "and longitude is :" + globLong); 
 

 
    }).then(
 
     function initMap() { 
 
     var uluru = { 
 
      lat: globLat, 
 
      lng: globLong 
 
     }; 
 
     var map = new google.maps.Map(document.getElementById('map'), { 
 
      zoom: 18, 
 
      center: uluru 
 
     }); 
 
     var marker = new google.maps.Marker({ 
 
      position: uluru, 
 
      map: map 
 
     }); 
 
     }); 
 
});

注:

私はonDeviceReady()が行うすべてのデバイスの準備ができているかどうかをチェックされ、そうであっても、デバイスモード enter image description here

答えて

0

を切り替えるには、Visual Studioの2015年リップルエミュレータを使用バックグラウンドでは、(あなたが推測した)ジオロケーションを取得するためのaaプラグインがバックグラウンドであるため、まだ挿入されます。代わりにhttp://ngcordova.com/docs/plugins/geolocation/を使用してください。

+0

はい、すでにgeolocationプラグインを使用しています。 デバイスがバックグラウンドモードになっているときにのみジオロケーションが挿入されている必要があります。 – saifaldeen

+0

その後、上記のコードは使用されていたと言及されていませんでした。 – Olli

+0

私はコードを更新しました:) – saifaldeen

関連する問題