【问题标题】:iOS Use Current Location Permission dialog is shown twice in Phonegap appiOS 使用当前位置权限对话框在 Phonegap 应用程序中显示两次
【发布时间】:2013-10-01 07:57:45
【问题描述】:

我有一个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

【问题讨论】:

    标签: javascript ios cordova geolocation


    【解决方案1】:

    如果您使用的是 PhoneGap 3+ 版本,请确保您正确包含该插件。

    来自PhoneGap v3.0.0 API Docs

    从 3.0 版开始,Cordova 将设备级 API 实现为插件。使用命令行界面中描述的 CLI 插件命令为项目添加或删除此功能

    【讨论】:

    • 啊!太棒了。我不敢相信我错过了这个。
    • @brandonjp 如果您错过了插件的安装,那么这两条消息怎么会出现在您面前?我已经按照文档中的说明安装了插件,但我仍然有提到的两条消息。有什么想法吗?
    • 您好,如何使用 Cordova 在 iPhone 上禁用位置权限警报。
    【解决方案2】:

    我有同样的问题,那是因为没有成功安装 phonegap 地理定位插件。你知道怎么安装吗?请查看如何打开http://docs.phonegap.com/en/3.0.0/guide_cli_index.md.html#The%20Command-line%20Interface

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        您必须运行“cordova prepare”才能更改 config.xml,它会自动生成用于地理定位插件的 cordova_plugins.js。

        请注意,因为当您运行 cordova prepare 时,它​​会清除您所有的 /www 文件夹。

        通常,您必须先添加所有插件并设置环境,然后才能将代码添加到 /www 文件夹...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-26
          • 1970-01-01
          • 1970-01-01
          • 2018-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-20
          相关资源
          最近更新 更多