带有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
详细信息时使用使用说明与NSLocationAlwaysUsageDescription
与NSLocationUsageDescription
。
最后解决了这个问题。
在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 :
-
将所有的js文件和html文件移动到同一个文件夹(甚至不是子文件夹)。 恭喜! 问题解决了,没有权限提醒:)
-
顺便说一句,你最好使用“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}
手动更改并查看..
那使用位置警报的权限只挑选您的包显示名称!