2016-12-19 2 views
0

내 프로젝트에서 백그라운드 모드 플러그인을 사용하고 있습니다.Cordova - ionic 백그라운드 모드 플러그인 문제

장치가 [장치 관리 모드]에있을 때 장치의 위치 정보를 데이터베이스에 삽입하려고합니다.

사용자가 [배경/일시 중지] 모드로 전환하면 장치의 Geolocation이 데이터베이스에 삽입되지 않습니다.

geolocation은 3 초마다 데이터베이스에 삽입됩니다.

장치 모드를 [백그라운드] 모드로 전환하면 데이터베이스에 geolocation을 계속 삽입합니다.

무엇이 문제입니까?

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 
 
     }); 
 
     }); 
 
});

참고 : 장치가 너무도, 준비가되어 있다면 확인되는 않는 장치 모드를 enter image description here

답변

0

모든 onDeviceReady()를 전환 2015 리플 에뮬레이터 비주얼 스튜디오를 사용

백그라운드에서 그것은 여전히 ​​(왜냐하면 당신은 그것을 짐작) 지리적 위치를 얻기위한 플러그인을 삽입하기 때문에 삽입됩니다. 대신 적절하게 필요에 맞게 http://ngcordova.com/docs/plugins/geolocation/을 사용하십시오.

+0

예.하지만 이미 geolocation 플러그인을 사용하고 있습니다. 장치가 백그라운드 모드 일 때 삽입 된 geolocation이 필요합니다. – saifaldeen

+0

그런 다음 전체 코드를 입력하십시오. 위의 코드는 사용 된 언급과 사용 방법을 작성하지 않았습니다. – Olli

+0

코드를 업데이트했습니다 :) – saifaldeen

관련 문제