使用PhoneGap和离子的iPhone上的位置许可警报

时间:2015-04-17 20:05:02

标签: ios angularjs cordova ionic

这是一个跟进: Location permission alert on iPhone with PhoneGap

图片:http://imgur.com/c2KBqbm

没有一个有效的答案,我仍然得到了答案     “/ private / var ...想要使用您的位置”消息。  我在工厂里有$ cordovaGeolocation

.factory('$cordovaGeolocation', ['$q', 'geo', function ($q) {

return {
    getCurrentPosition: function (options) {
        var q = $q.defer();

        navigator.geolocation.getCurrentPosition(function (result) {
            q.resolve(result);
            console.log(JSON.stringify(q.resolve(result)));
        }, function (err) {
            q.reject(err);
        }, options);

        return q.promise;
    },

    watchPosition: function (options) {
        var q = $q.defer();

        var watchID = navigator.geolocation.watchPosition(function (result) {
            q.notify(result);
        }, function (err) {
            q.reject(err);
        }, options);

        q.promise.cancel = function () {
            navigator.geolocation.clearWatch(watchID);
        };

        q.promise.clearWatch = function (id) {
            navigator.geolocation.clearWatch(id || watchID);
        };

        q.promise.watchID = watchID;

        return q.promise;
    },

    clearWatch: function (watchID) {
        return navigator.geolocation.clearWatch(watchID);
    }
};
}])

并在我的.state中解析它。

resolve : {
  initialGeo: function ($cordovaGeolocation) {
    var posOptions = {timeout: 1000, enableHighAccuracy: true};
    return $cordovaGeolocation.getCurrentPosition(posOptions);
  }
}

我无法摆脱这个可怕的信息。我正在使用最新的离子和cordova版本以及普通的'ol phonegap geolocation插件。

我尝试过的: - 对config.xml的更改

<feature name="Geolocation">
    <param name="ios-package" value="CDVLocation" />
</feature>
<plugins>
    <plugin name="Device" value="CDVDevice" />
    <plugin name="Logger" value="CDVLogger" />
    <plugin name="Compass" value="CDVLocation" />
    <plugin name="NetworkStatus" value="CDVConnection" />
    <plugin name="Debug Console" value="CDVDebugConsole" />
    <plugin name="Geolocation" value="CDVLocation" />
    <plugin name="SplashScreen" value="CDVSplashScreen" />
    <plugin name="Battery" value="CDVBattery" />
    <plugin name="Globalization" value="CDVGlobalization" />
</plugins>
  • 掏出工厂,只是做了

    document.addEventListener(“deviceready”,function(){  navigator.geolocation.getCurrentPosition(onsuccess,onerror,params); },false);

  • 将cordova.js移动到要加载的第一个脚本。

  • 将所有js文件移至root。

正常的权限提醒会显示一次。丑陋的一个显示2-3次,然后再次显示。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我明白了。如果您要立即询问地理位置,请在路线上添加延迟,以便为我修复。

resolve : {
  waitOnMe: function ( $timeout) {
  return  $timeout(function () { }, 100);
  }
}