屏幕锁定时的 navigator.geolocation.getCurrentPosition()
Posted
技术标签:
【中文标题】屏幕锁定时的 navigator.geolocation.getCurrentPosition()【英文标题】:navigator.geolocation.getCurrentPosition() when screen is locked 【发布时间】:2015-11-29 21:56:26 【问题描述】:我有一个应用程序,当它处于旅行模式时,它会不断地轮询位置。我的问题是,一旦屏幕被锁定,应用程序就无法再通过手机访问地理位置。
我设法找到了这个插件,但它需要我购买它才能在 android 中工作。 http://shop.transistorsoft.com/pages/cordova-background-geolocation-premium
有谁知道是否有一个免费选项可以让我在屏幕锁定时在 Ionic / Cordova 应用程序中获取位置以成功轮询?
【问题讨论】:
【参考方案1】:你看过NG-Cordova吗?
首先将 ng-cordova 添加到您的项目中:
bower install ngCordova
or
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>
然后注入它:
angular.module('myApp', ['ngCordova'])
这是一个您可以尝试的插件: http://ngcordova.com/docs/plugins/backgroundGeolocation/
只需安装插件:
cordova plugin add https://github.com/christocracy/cordova-plugin-background-geolocation.git
然后将其绑定到控制器:
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);
);
【讨论】:
感谢@Jess,但似乎他们已经清除了该存储库,并将 README.md 文件更改为指向我最初链接的付费版本。如果我运行该插件安装,我想它现在只会下载许可证和自述文件? 好吧,看起来一切都是付费的一个分支,我不知道你对此有多满意,但如果你认为时间值得省钱,你可以编写自己的插件cordova.apache.org/docs/en/4.0.0/… 或者你可以使用已经分叉的版本:github.com/srom/cordova-plugin-background-geolocation【参考方案2】:另一种选择是在 Android 上使用 partial wakelock 以使您的应用在后台(屏幕关闭或切换出前台)时保持活跃。您需要通过插件来执行此操作,但它与后台服务具有相同的效果,让您的应用程序保持活动状态,以便在后台接收位置更新。
请参阅my old answer here 获取 Cordova 2.0 插件的源代码(需要针对 Cordova 3+ 进行更新)。
【讨论】:
现在有一个支持部分唤醒锁的插件版本,可通过 GitHub 获得:github.com/boltex/cordova-plugin-powermanagement @DaveAlden 先生,我正在使用 ionic3.9 请告诉我如何在 ionic3 中使用?以上是关于屏幕锁定时的 navigator.geolocation.getCurrentPosition()的主要内容,如果未能解决你的问题,请参考以下文章