带有PhoneGap的iPhone上的位置权限提醒

你如何改变警报上的string:

(应用程序/不pipe它是什么)想要使用你的当前位置

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

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

有人有一个想法?

设备准备就绪后,您需要进行地理定位。 例如,下面的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 } 

在电话3.0的庇护Uzamere的答案需要遵循和插件安装。

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

否则您将获得双重权限请求。

我只是按照文档解决了它。 打开terminal并cd到您的项目并input以下命令。 $ 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

虽然这个问题更老,我在这里和这里发现了类似的问题。

对于我的决议,我不得不添加NSLocationWhenInUseUsageDescription到.plist文件。 不过,我想因为我的地理位置插件已经过时了,所以我必须先更新它。 然后,我不得不删除/添加cordovaiOS平台。 最后,我添加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> 

请参阅此iOS开发人员库链接 ,了解有关NSLocationWhenInUseUsageDescription详细信息时使用使用说明与NSLocationAlwaysUsageDescriptionNSLocationUsageDescription

最后解决了这个问题。

在index.html中,只需移动cordova.js即可

<script src =“cordova.js”> </ script>

作为第一个要包含的js文件(特别要确保它在地图上方包含js)。 这将确保提示只显示一次。

没有其他codejs或ondeviceready是必要的。

上面的答案都没有为我工作。 我的位置请求已经在deviceready上触发。 将以下内容添加到config.xml解决了问题:

 <gap:plugin name="org.apache.cordova.core.geolocation" /> 

要解决这个问题,我必须运行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> 

希望能有所帮助。

  • 只要在你访问这个位置的HTML文件中包含“cordova.js”文件就可以解决这个问题。 没有花色需要。

寻找我已经build立的解决scheme后,只需添加一个variables,当你添加插件的位置就像这一行

 cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="your usage message" 

我在这里参加晚会,但会回答这个问题以供参考。 答案是使用Phonegap中包含的phonegap.js中的地理位置函数。 您将能够在Phonegap网站http://www.phonegap.com上find这样的说明。;

如果您使用navigator.geolocation ,则使用默认的Safari地理定位系统。 这是因为PhoneGap通过在Safari实例中有效运行页面而发生的。 如果您在您的网站中包含phonegap.js,则可以使用PhoneGap的Objective-C代码公开的单独的地理定位方法,该方法将显示在其他应用程序中显示的行为,并从[您的应用程序名称]请求许可。

1)在PhoneGapLib项目中修改Location.m。 将navigator.geolocation的所有引用replace为navigator_geo

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

3)修改在626上创buildnavigator.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构build一个应用程序。

* CAVEAT,请帮助! *

如果我运行watchPosition函数,我将得到第一个位置更新与各种统计。 之后,它总会报告一个错误。 我认为这30秒的准确的GPS这些东西很糟糕?

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

我遵循了所有的指示,但仍然失败。 最后我玩了PhoneGap演示,并find了最终的解决scheme

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

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

希望有帮助,当你找不到上面的解决scheme:)

祝你好运!

由于我现在在同一个问题上挣扎了好几天,终于find了解决办法,所以我决定和那些仍然无法解决问题的人分享。

解决方法很简单:尽pipe我通过phonegap命令行界面添加了插件,并且插件文件位于/ Plugins目录中,但www目录中的插件目录中缺less地理位置插件。 所以你只需要将缺失的文件复制到/ www / plugins中,就完成了。 就这么简单。

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

顺便说一句:我正在使用cordova3.2.0。

我希望这也适合你!

Phoengap /cordova版本3.5在这里。

与上面Manuel的回答类似,但是这次插件不会安装在platforms / ios / [appname] / Plugins文件夹中。

对我来说,修复只是在../platforms/ios/[appname]/Plugins文件夹中手动创build插件的新文件夹>然后将其重命名为org.apache.cordova.geolocation>然后复制.h和。插件的m文件。

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

在设备准备就绪后,确保geolocation请求被调用后,确保地理位置插件已正确安装和configuration,但仍然收到难看的popup窗口。

我通过移动并将我的cordova.js文件和cordova_plugins.js文件移动到我的应用程序的根目录(它们本来是在一个子文件夹中)来解决它,所以cordova.js的path是:

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

我觉得这应该包括在文档中(也许是,但我还没有设法find它)

将Cordova从3.6升级到4.3后出现这个错误(还有很多其他错误)。

我认为在升级过程中有一些失败,我唯一的工作解决scheme是cordova platform rm ios然后cordova platform add ios

/!\你将失去所有的ios项目设置,你需要重新上传飞溅和图标。

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

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

然后附加消息不会出现。

“把所有的js文件和html文件移动到同一个文件夹(甚至不是子文件夹)。恭喜!问题解决了,没有权限提醒:)”就像Caleb说的那样对我很好,只是把cordova.js文件移动到根目录并将该插件添加到config.xml

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

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

那使用位置警报的权限只挑选您的包显示名称!