javascript - Cordova 应用程序背景中的GPS坐标

标签 javascript cordova ionic-framework geolocation hybrid-mobile-app

我目前正在使用 ionic/cordova 开发混合应用程序。 该应用程序需要每 1 分钟左右向我们的后端发送一次位置信息,如果附近有任何有趣的东西,后端 API 将作出响应。 如果答案是肯定的,该应用程序将对本地通知进行排队,这有望让用户打开该应用程序。 当应用程序处于后台模式甚至手机被锁定时,都需要此功能。 该应用需要能够同时部署到应用商店、Google Play 和最终的 Windows Phone。

我目前正在使用这三个插件的组合:

https://www.npmjs.com/package/cordova-plugin-geolocation - 对于位置 https://github.com/katzer/cordova-plugin-background-mode - 对于背景模式 https://github.com/katzer/cordova-plugin-local-notifications - 用于本地通知

当前,当设备未锁定时(因此它可以在前台和后台模式下工作),这在 Android 上有效,但当设备锁定时,它无法获取 GPS 坐标。

我的代码目前看起来像这样:

        // Enable background worker          
        (cordova as any).plugins.backgroundMode.enable();

   intervalPromise = $interval(intervalWork, 30000, 0, false);

    function intervalWork() {
        $log.log('Trying to fetch pos');

        var options = { maximumAge: 30000, timeout: 30000, enableHighAccuracy: false };

        navigator.geolocation.getCurrentPosition(success,
            err,
            options);
    }

    function success(pos) {
        $log.log("lat: " + pos.coords.latitude + " long: " + pos.coords.longitude);

        var Checkin = $resource(ApiDataEndpoint.url + 'checkin/:lat/:lng/', {});

        var res= Checkin.get({ lat: pos.coords.latitude, lng: pos.coords.longitude });

               if (res) { 

                $cordovaLocalNotification.schedule({
                    id: 1,
                    title: 'test',
                    text: 'test',
                }).then(function(result) {
                    $log.log("ok");
                });
            };
         }

所以...我的问题是:

1) 当我的设备被锁定时如何使解决方案工作(即使设备被锁定但返回超时也会调用 getCurrentPosition)?

2) 是否可以让这个解决方案在 iOS 上运行?

3) 以这种方式制作的应用会在 google play 和应用商店中获得批准吗?

4) 如果项目注定要失败,我有什么选择?

我真的需要这方面的帮助!

最佳答案

所以我目前有一个应用程序可以解决您上面列出的所有问题,这是我正在使用的插件:

https://github.com/mauron85/cordova-plugin-background-geolocation

  1. 该插件使用 watchPosition() 而不是 getCurrentPosition(),因为这个插件需要很长时间才能持续 ping 设备并消耗更多电池电量。

  2. 这肯定适用于 Android 和 iOS,但恕我直言,就精度和保持事件功能而言,它在 Android 上的表现比后者更好。

  3. 我在 Google Play 上没问题,Apple 确实允许使用此插件,Apple 商店中有许多使用此插件的应用程序,但 Apple 可能最初会拒绝它并询问应用程序的后台使用意图,然后,您将不得不就应用程序在后台执行的操作提出申诉,并确保它不会无限期运行(这是我的经验)。

    一个。您还需要确保向 Apple 人员指出,用户可以通过一种方式关闭后台地理定位跟踪。我假设有?这是他们使用插件的主要问题。

祝你好运。

关于javascript - Cordova 应用程序背景中的GPS坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36036429/

相关文章:

cordova - 无法使用cordova-plugin-file-transfer上传base64图像

javascript - "Edge"浏览器上的客户端编码选项

javascript - JavaScript 中的对象引用比较

javascript - 如何在 dojox.charting 中注销图例?

javascript - 如何将 Android/iOS 应用程序与 Cordova 混合应用程序连接

android - 使用 Phonegap 和 JQuery Mobile 的 AJAX 到 Sharepoint Server 不工作

ios - 具有 Firebase 消息传递和 Firebase 动态链接的 Cordova Ionic 项目

angularjs - ng-click 不适用于 ionic 中的 div

angular - 连接为 Meteor 客户端的 Ionic UI 的简单示例?

javascript - 如何加载只会添加一个额外脚本的 JS 脚本