Angular js cordova地理位置获取当前位置并在后台将数据发送到服务器

Angular js cordovaGeolocation getting current position and Sending Data to Server in Background

本文关键字:数据 后台 服务器 地理位置 cordova js 获取 位置 Angular      更新时间:2023-09-26

我正在尝试 cordova地理位置链接 我已经在我的应用程序中插入了相同的代码,当应用程序打开时它对我来说工作正常,我需要获取此地理位置并在应用程序在后台时将其发送到服务器,因此使用后台模式科尔多瓦请参阅背景模式文档链接。

  1. 我正在获取地理位置,并在应用程序打开时发送到服务器工作正常。
  2. 我也在应用程序状态中使用了暂停和恢复科尔多瓦,就像在本机 android 中一样。
  3. 当应用程序处于暂停状态时,我在 onactivate() 中使用了后台启用(),给定间隔并获取地理位置并发送到服务器。
  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);
     }
      })];

错误是当应用程序关闭或暂停时,收到位置错误消息:获取地理位置且未将数据发送到服务器时超时。请参阅此编码并指导我完成此操作。提前谢谢你。

你可以试试这个:

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: true};
        $cordovaGeolocation
          .getCurrentPosition(posOptions)
          .then(function (position) {
            var geo = {};
            geo.location_latitude=position.coords.latitude;
            geo.location_longitude=position.coords.longitude;
            Service.CurrentService(geo).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);
     }
      })];

或者您可以更改:

    $http({
    url : 'yourserverURL',
      method: 'POST',
      data: obj,
     header:{'Content-Type':'application/json; charset=utf-8'}
   }).success(function (data,status,headers,config){
              console.log(new Date());
              console.log("cur loc: "+JSON.stringify(data));
   }).error(function (data,status,headers,config){});

相反

Service.CurrentService(geo).success(function(data){
                  console.log(new Date());
                  console.log("cur loc: "+JSON.stringify(data));
                }).error(function(data){
                  console.log("error: "+JSON.stringify(data));
                })

**您也可以尝试将其放置在控制器中