iOS Phonegap应用中出现了两次显示当前位置权限的对话框。

5

我有一个使用Phonegap开发的应用程序。我在HTML中包含了cordova.js(但不在www目录中),等待deviceready事件被触发后,我会调用相应的函数。

navigator.geolocation.getCurrentPosition(successCallback,failCallback);

我收到了两个对话框的版本(按照以下顺序):
本地对话框 - http://i.stack.imgur.com/H5y1O.png HTML 对话框 - http://i.stack.imgur.com/XbcmR.png
4个回答

5
如果您使用的是PhoneGap的3.0版本及以上,请确保正确地包含了插件。
根据PhoneGap v3.0.0 API文档
引用如下: 自从3.0版本以后,Cordova将设备级别的API实现为插件。使用命令行界面中的插件命令(The Command-line Interface),可以为项目添加或删除此功能。

啊!太完美了。我简直不敢相信我错过了这个。 - bendalton
如果你错过了插件的安装,那么这两条消息怎么可能出现在你面前呢?我按照文档描述安装了插件,但我仍然收到了这两条消息。有什么想法吗? - Dev DOS
你好,如何在使用Cordova的iPhone上禁用位置权限提示框。 - KAUSHAL J. SATHWARA

0

0

不要在deviceready被触发后立即调用getCurrentPosition。因为geolocation插件还没有准备好,所以navigator.geolocation.getCurrentPosition实际上会调用HTML5 api,然后你会看到HTML对话框。在我的ionic项目中,我会执行以下操作,以确保geolocation插件在调用navigator.geolocation.getCurrentPosition之前已经准备好了。

    var my_getposition = function() {
        if (ionic.Platform.isIOS() && !window.Coordinates) {
            $timeout(function(){ my_getposition(); }, 500);
            return;
        }
        navigator.geolocation.getCurrentPosition(...);
    }

-1
你需要运行 "cordova prepare" 命令才能更改 config.xml,它会自动生成 cordova_plugins.js 文件,该文件将用于地理位置插件。
请注意,当你运行 cordova prepare 命令时,它会擦除所有 /www 文件夹的内容。
通常情况下,你需要在将代码添加到 /www 文件夹之前添加所有插件并设置环境...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接