52

您如何更改警报上的字符串:

(应用名称/无论它是什么)想使用您当前的位置

当然,我只想更改 appname 部分。因为当你使用PhoneGap框架的时候,字符串非常难看,像这样:

/var/mobile/Applications/157EB70D-4AA7-826E-690F0CBE0F/appname.app/www/index.html

有人有想法吗?

4

19 回答 19

94

您需要在设备准备好后进行地理定位。例如,下面的 Jquery 代码将在没有那个讨厌的警报的情况下进行地理定位:

$(function(){
  document.addEventListener("deviceready", onDeviceReady, false);
})

function onDeviceReady() {
  navigator.geolocation.getCurrentPosition(onSuccess, onError);     
}

function onSuccess(position) {
  // your callback here 
}

function onError(error) { 
  // your callback here
}
于 2011-02-16T15:39:44.193 回答
17

在 phonegap 3.0 上,需要遵循 Pius Uzamere 的答案并安装插件。

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git

否则你会得到双重许可请求。

于 2013-09-17T01:19:02.290 回答
13

我只是按照文档并解决了它。打开终端并 cd 到您的项目并输入以下命令。 $cordova 插件添加https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git

还要在你的 config.xml 中添加这个

<feature name="Geolocation">
    <param name="ios-package" value="CDVLocation" />
</feature>

它将解决这个问题。:)

来源:http ://docs.phonegap.com/en/3.0.0/cordova_geolocation_geolocation.md.html#The%20Command-line%0AInterface

于 2014-07-01T18:53:20.263 回答
8

虽然这个问题要老得多,但我在这里这里发现了类似的问题。

对于我的决议,我必须添加NSLocationWhenInUseUsageDescription到 .plist 文件中。但是,我想由于我的地理定位插件已经过时,我必须先更新它。然后我不得不删除/添加 Cordova iOS 平台。最后,我添加NSLocationWhenInUseUsageDescription到 .plist 文件中。

首先,删除/添加地理定位插件:

cordova plugin rm org.apache.cordova.geolocation
cordova plugin add org.apache.cordova.geolocation

二、移除/添加iOS平台:

cordova platform rm ios
cordova platform add ios

最后,添加NSLocationWhenInUseUsageDescription到 .plist。打开/platforms/ios/{project}/{project}-Info.plist并添加以下内容:

<key>NSLocationWhenInUseUsageDescription</key>
<string>[App Name] would like to access your location when running and displayed.</string>

有关与vs的详细信息,请参阅此iOS 开发人员库链接NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescriptionNSLocationUsageDescription

于 2015-06-09T20:56:31.660 回答
7

终于解决了这个问题。

在 index.html 中,只需将您的 cordova.js 向上移动

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

作为要包含的第一个 js 文件(特别是确保它在 maps include js 之上)。这将确保提示仅显示一次。

不需要其他 codejs 或 ondeviceready。

于 2014-07-18T11:31:33.147 回答
4

在寻找我建立的解决方案之后,只需在添加插件位置时添加一个变量,就像这一行一样

cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="your usage message"
于 2017-08-14T14:00:08.430 回答
2

以上答案都不适合我。我的位置请求已经在 deviceready 上触发。将以下内容添加到 config.xml 解决了该问题:

<gap:plugin name="org.apache.cordova.core.geolocation" />
于 2013-12-03T22:29:00.253 回答
2

为了解决这个问题,我必须运行cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git它(自动)向 config.xml 添加以下内容:

<feature name="Geolocation">
     <param name="ios-package" value="CDVLocation" />
</feature>

为了使事情正常进行,我还必须将这些行放入 config.xml:

<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>

希望它会有所帮助。

于 2014-11-07T16:44:05.593 回答
1

在确保geolocation设备准备就绪后调用了我的请求,确保正确安装和配置了地理定位插件后,我仍然收到难看的弹出窗口。

我通过将我的cordova.js文件和cordova_plugins.js文件移动并引用到我的应用程序的根目录中来解决它(它们最初位于子文件夹中),因此路径为cordova.js

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

我觉得这应该包含在文档中(也许是,但我没有设法找到它)

于 2014-11-28T11:49:52.227 回答
1
  • 只需在您访问此位置的 html 文件中包含“cordova.js”文件即可解决此问题。没有什么花哨的要求。
于 2016-11-30T14:42:39.667 回答
0

我在这里聚会迟到了,但会回答这个问题以供参考。答案是使用 Phonegap 中包含的 phonegap.js 中的地理定位功能。您可以在位于http://www.phonegap.com的 Phonegap 网站上找到此类说明。

如果您使用navigator.geolocation,则您使用的是默认的 Safari 地理定位系统。这是因为 PhoneGap 通过在 Safari 实例中有效地运行您的页面来工作。如果您将 phonegap.js 包含到您的站点中,则可以使用 PhoneGap 的 Objective-C 代码公开的单独地理定位方法,该方法将呈现在其他应用程序中看到的行为,它会向 [您的应用程序名称] 请求许可。

于 2010-08-04T23:11:40.667 回答
0

1)修改PhoneGapLib项目中的Location.m。用 navigator_geo 替换 navigator.geolocation 的所有引用

2) 将 phonegap.js 复制到 phonegap2.js 并放入应用程序的根目录。我现在了解到,每次构建应用程序并将其加载到设备或模拟器上时,都会重新生成 phonegap.js 文件。好的。好吧,我需要对其进行修改,所以让我们只使用另一个并处理将来升级的麻烦。

3) 将在 626 上为 navigator.geolocation 创建构造函数的行(在 phonegap2.js 中)修改为 ... if (typeof navigator._geo == "undefined") navigator._geo = new Geolocation();

4) 现在在您的 HTML 中,每当您想使用 PHONEGAP GPS 的东西时,您都可以使用 navigator._geo.getCurrentPosition 或类似的东西来引用它 5) 享受 ONE 和 CLEAN 的位置警报权限,而不会向您的用户透露您使用 PhoneGap 的智能并使用 HTML/JS 构建应用程序。

* 警告并请帮助!*

如果我运行 watchPosition 函数,我将获得包含各种统计信息的第一个位置更新。之后,它总是会报错。我认为这对于在这些东西上获得准确 GPS 的这 30 秒时间来说很糟糕?

http://groups.google.com/group/phonegap/browse_thread/thread/8067c2037816a9ad

于 2010-09-16T13:12:04.773 回答
0

我按照所有说明进行操作,但仍然失败。最后,我玩了 PhoneGap 演示并找到了最终解决方案

  1. 将所有 js 文件和 html 文件移动到同一个文件夹(甚至不是子文件夹)。恭喜!问题已解决,不再有权限警报:)

  2. 顺便说一句,你最好使用“setTimeout(function(){utility.getGeoData();},1000);” 我发现“document.addEventListener("deviceready", utility.getGeoData(), false);" 不适合我。

希望当您在上面找不到解决方案时会有所帮助:)

祝你好运!

于 2011-03-09T03:56:56.123 回答
0

Phoengap/Cordova 版本 3.5 在这里。

类似于上面 Manuel 的回答,但这次插件没有安装在 platform/ios/[appname]/Plugins 文件夹中。

我的解决方法是在 ../platforms/ios/[appname]/Plugins 文件夹中手动为插件创建一个新文件夹 > 然后将其重命名为 org.apache.cordova.geolocation > 然后复制 .h 和 .将插件的 m 个文件放入其中。

您可以在 [root]/plugins/org.apache.cordova.geolocation/src/ios 目录中找到 geoLocation 插件的 .m 和 .h 文件。

于 2014-11-04T17:33:37.977 回答
0

由于我已经为同样的问题苦苦挣扎了好几天,终于找到了解决方案,所以我决定与仍然无法解决它的任何人分享它。

解决方案很简单:尽管我通过 phonegap 命令行界面添加了插件并且插件文件位于 /Plugins 目录中,但 www 目录中的 plugins 目录中缺少地理定位插件。因此,您只需将丢失的文件复制到 /www/plugins 即可。就这么简单。

如果有人需要丢失的文件:http ://d.pr/f/xqhq

顺便说一句:我正在使用科尔多瓦 3.2.0。

我希望这也适用于你!

于 2013-12-23T21:15:25.163 回答
0

将 Cordova 从 3.6 升级到 4.3 后出现此错误(以及许多其他错误)。

我认为升级过程中有一些失败,对我来说唯一可行的解​​决方案cordova platform rm ioscordova platform add ios

/!\ 您将丢失所有 ios 项目设置,您需要重新上传启动画面和图标。

于 2015-03-05T10:14:33.403 回答
0

就我而言,我正在使用 Cordova/Ionic 并且遇到了同样的问题。那是因为设备准备好之前的代码。我只是在“deviceready”上用 document.addEventListener 包装了代码。例如:

document.addEventListener("deviceready", function () {
  $cordovaGeolocation.getCurrentPosition(options).then(function(position){
      ...your code here...
    });
});

然后不会出现附加消息。

于 2017-05-02T05:45:34.287 回答
-1

“将所有 js 文件和 html 文件移动到同一个文件夹(甚至不是子文件夹)。恭喜!问题已解决,不再有权限警报 :)”就像 Caleb 说的对我有用,只是将 cordova.js 文件移动到根并将插件添加到 config.xml

于 2014-05-07T14:25:09.550 回答
-2

您项目的 Bundle 显示名称是什么?

尝试从默认值手动更改${PRODUCT_NAME}并查看..

使用位置警报的权限仅选择您的捆绑显示名称!

于 2009-11-04T13:33:22.480 回答