cordova-ionic 应用程序在后台进行地理定位 - android 和 ios

Posted

技术标签:

【中文标题】cordova-ionic 应用程序在后台进行地理定位 - android 和 ios【英文标题】:cordova-ionic app take geolocation in background - android and ios 【发布时间】:2015-08-13 21:12:44 【问题描述】:

我想使用 cordova 和 ionic 构建一个能够提供地理定位的应用程序。根据我的研究,当应用程序在后台运行时提供有关地理位置的信息存在一些问题。您能否就如何解决此问题提供任何提示或建议?谢谢 :D

【问题讨论】:

【参考方案1】:

当然,使用此插件可以进行后台地理定位:cordova-plugin-background-geolocation。

添加 ngCordova 以通过 AngularJS 包装器与插件交互。

ngCordova 和 cordova-plugin-background-geolocation 的示例(来自 ngCordova 文档的示例):

module.controller('MyCtrl', function($scope, $cordovaBackgroundGeolocation) 

  var options = 
    // https://github.com/christocracy/cordova-plugin-background-geolocation#config
  ;

  document.addEventListener("deviceready", function () 

    // `configure` calls `start` internally
    $cordovaBackgroundGeolocation.configure(options)
    .then(
      null, // Background never resolves
      function (err)  // error callback
        console.error(err);
      ,
      function (location)  // notify callback
        console.log(location);
      );


    $scope.stopBackgroundGeolocation = function () 
      $cordovaBackgroundGeolocation.stop();
    ;

  , false);
);

【讨论】:

我刚刚安装了插件和 ngCordova,我想用这个例子进行测试....请告诉我,如果我包括这个---->>desiredAccuracy: 10,stationaryRadius:20, distanceFilter: 30, notificationTitle: 'Background tracking', // 是的,将其添加到选项对象应该允许您测试插件。您必须尝试各种选项才能找到适用于您的应用的值。 嗨...我将“geolocation-background”包装在我的“$ionicPlatform.ready(function()”中并且似乎可以工作。我使用了这个解决方案,因为使用 ngCordova“设备就绪功能”没有t 工作。但是,因为这个函数超出了“$scope”覆盖(超出 app.controller),我的问题是,我怎样才能检测到这个函数中的点击事件?谢谢......我希望得到很好的解释: ))) 您可以在控制器中使用$ionicPlatform.ready()。请务必将其包含在您的控制器定义中:module.controller('MyCtrl', function($scope, $ionicPlatform, $cordovaBackgroundGeolocation). 没问题,很高兴听到您成功了。祝你的项目好运。

以上是关于cordova-ionic 应用程序在后台进行地理定位 - android 和 ios的主要内容,如果未能解决你的问题,请参考以下文章

MFP Cordova-Ionic 项目的 IOS 构建失败

在后台广播的工作地理围栏示例

如何在 Geofence android 中添加后台服务

Phonegap iOS 在后台使用地理位置

应用程序在后台时未触发地理围栏通知

在后台服务中创建地理围栏