【问题标题】:navigator.geolocation.getCurrentPosition() when screen is locked屏幕锁定时的 navigator.geolocation.getCurrentPosition()
【发布时间】:2015-11-29 21:56:26
【问题描述】:

我有一个应用程序,当它处于旅行模式时,它会不断地轮询位置。我的问题是,一旦屏幕被锁定,应用程序就无法再通过手机访问地理位置。

我设法找到了这个插件,但它需要我购买它才能在 Android 中工作。 http://shop.transistorsoft.com/pages/cordova-background-geolocation-premium

有谁知道是否有一个免费选项可以让我在屏幕锁定时在 Ionic / Cordova 应用程序中获取位置以成功轮询?

【问题讨论】:

    标签: cordova geolocation location ionic-framework cordova-plugins


    【解决方案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+ 进行更新)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-15
    • 2016-05-28
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多