屏幕锁定时的 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()的主要内容,如果未能解决你的问题,请参考以下文章

屏幕锁定时的 navigator.geolocation.getCurrentPosition()

下面的代码有啥问题?

在主故事板顶部呈现锁定屏幕

从控制器中的导航器获取用户位置

屏幕关闭时的 iBeacon 事件

H5微信 获取用户当前位置信息