【问题标题】:How do I prevent PhoneGap Build from asking for location permissions? (iPhone)如何防止 PhoneGap Build 请求位置权限? (苹果手机)
【发布时间】:2014-10-04 14:19:20
【问题描述】:

我已经实施了所有我找不到的文档和修复程序。

我希望应用在点击按钮时获取位置。

我尝试的每个修复都有以下两种结果之一:
1) 每次都会出现乱七八糟的权限请求。
2) 经纬度报告为'0'。

无论我在哪里调用 getCurrentPosition(),我都会收到一团乱七八糟的权限请求(即使在首次加载应用程序时请求它)。

我可以将权限请求限制为每个会话一次,但这仍然是一个丑陋的混乱,我无法相信没有办法避免它。

config.xml -- 使用 ConfiGAP 更新

<preference name="phonegap-version" value="3.3.0" />
<preference name="orientation" value="portrait" />
<preference name="fullscreen" value="false" />
<preference name="target-device" value="universal" />
<preference name="webviewbounce" value="false" />
<preference name="prerendered-icon" value="true" />
<preference name="stay-in-webview" value="true" />
<preference name="ios-statusbarstyle" value="black-transparent" />
<preference name="detect-data-types" value="false" />
<preference name="exit-on-suspend" value="false" />
<preference name="show-splash-screen-spinner" value="false" />
<preference name="auto-hide-splash-screen" value="true" />
<preference name="EnableViewportScale" value="true" />
<preference name="MediaPlaybackRequiresUserAction" value="false" />
<preference name="AllowInlineMediaPlayback" value="false" />
<preference name="BackupWebStorage" value="none" />
<preference name="TopActivityIndicator" value="gray" />
<preference name="KeyboardDisplayRequiresUserAction" value="false" />
<preference name="HideKeyboardFormAccessoryBar" value="false" />
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="android-minSdkVersion" value="7" />
<preference name="android-installLocation" value="internalOnly" />
<preference name="SplashScreenDelay" value="5000" />
<preference name="ErrorUrl" value=""/>
<preference name="BackgroundColor" value="0x000000"/>
<preference name="KeepRunning" value="true"/>
<preference name="DisallowOverscroll" value="true"/>
<preference name="LoadingDialog" value=","/> 
<preference name="LoadUrlTimeoutValue" value="20000" />
<preference name="disable-cursor" value="false" />
<gap:platform name="ios" />
<gap:platform name="android" />
<gap:platform name="winphone" />
<feature name="http://api.phonegap.com/1.0/geolocation"/>
<gap:plugin name="org.apache.cordova.geolocation"  />
<gap:plugin name="org.apache.cordova.splashscreen"  />
<gap:plugin name="com.phonegap.plugin.statusbar" />
    <gap:config-file platform="ios" parent="UIStatusBarHidden">
        <true/>
    </gap:config-file>
        <gap:config-file platform="ios" parent="UIViewControllerBasedStatusBarAppearance">
        <false/>
    </gap:config-file>

app.js

$("#punches").on('pagebeforeshow', function () {
    navigator.geolocation.getCurrentPosition (function (pos) {
        var lat = pos.coords.latitude,
            lon = pos.coords.longitude;

        $("#latitude").val(lat);
        $("#longitude").val(lon);
    });
});

厌倦了将我的头撞到墙上,因为我觉得应该比我做的容易得多。

任何帮助非常感谢。

【问题讨论】:

  • “警报表单”中的权限是因为没有正确包含cordova.js 库。所以事件没有正确映射。您是在使用 phonegap build 还是 cordova-cli 来构建您的应用程序?
  • 我们正在使用 PhoneGap Build 服务。

标签: ios jquery-mobile cordova phonegap-plugins phonegap-build


【解决方案1】:

不应该

var lat = pos.coords.latitude;
var lon = pos.coords.longitude;

?

我还要确保我指定了核心地理定位插件的版本,以便您知道它适用于您的 PGB 版本。

【讨论】:

  • 逗号分隔也是有效的变量声明。另外,请查看更新后的 config.xml
【解决方案2】:

这非常尴尬……但看来我所缺少的只是:

<script src="phonegap.js"></script>

我把它放在我的index.html 中,现在双重权限消失了,纬度/经度得到了适当的报告。

我为这个问题道歉。感谢那些帮助过的人。

【讨论】:

    猜你喜欢
    • 2016-10-10
    • 2017-02-01
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    相关资源
    最近更新 更多