您如何更改警报上的字符串:
(应用名称/无论它是什么)想使用您当前的位置
当然,我只想更改 appname 部分。因为当你使用PhoneGap框架的时候,字符串非常难看,像这样:
/var/mobile/Applications/157EB70D-4AA7-826E-690F0CBE0F/appname.app/www/index.html
有人有想法吗?
您如何更改警报上的字符串:
(应用名称/无论它是什么)想使用您当前的位置
当然,我只想更改 appname 部分。因为当你使用PhoneGap框架的时候,字符串非常难看,像这样:
/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
}
在 phonegap 3.0 上,需要遵循 Pius Uzamere 的答案并安装插件。
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation.git
否则你会得到双重许可请求。
我只是按照文档并解决了它。打开终端并 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>
它将解决这个问题。:)
对于我的决议,我必须添加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 开发人员库链接。NSLocationWhenInUseUsageDescription
NSLocationAlwaysUsageDescription
NSLocationUsageDescription
终于解决了这个问题。
在 index.html 中,只需将您的 cordova.js 向上移动
<script src="cordova.js"></script>
作为要包含的第一个 js 文件(特别是确保它在 maps include js 之上)。这将确保提示仅显示一次。
不需要其他 codejs 或 ondeviceready。
在寻找我建立的解决方案之后,只需在添加插件位置时添加一个变量,就像这一行一样
cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="your usage message"
以上答案都不适合我。我的位置请求已经在 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>
希望它会有所帮助。
在确保geolocation
设备准备就绪后调用了我的请求,确保正确安装和配置了地理定位插件后,我仍然收到难看的弹出窗口。
我通过将我的cordova.js
文件和cordova_plugins.js
文件移动并引用到我的应用程序的根目录中来解决它(它们最初位于子文件夹中),因此路径为cordova.js
:
<script src="cordova.js"></script>
我觉得这应该包含在文档中(也许是,但我没有设法找到它)
我在这里聚会迟到了,但会回答这个问题以供参考。答案是使用 Phonegap 中包含的 phonegap.js 中的地理定位功能。您可以在位于http://www.phonegap.com的 Phonegap 网站上找到此类说明。
如果您使用navigator.geolocation
,则您使用的是默认的 Safari 地理定位系统。这是因为 PhoneGap 通过在 Safari 实例中有效地运行您的页面来工作。如果您将 phonegap.js 包含到您的站点中,则可以使用 PhoneGap 的 Objective-C 代码公开的单独地理定位方法,该方法将呈现在其他应用程序中看到的行为,它会向 [您的应用程序名称] 请求许可。
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
我按照所有说明进行操作,但仍然失败。最后,我玩了 PhoneGap 演示并找到了最终解决方案:
将所有 js 文件和 html 文件移动到同一个文件夹(甚至不是子文件夹)。恭喜!问题已解决,不再有权限警报:)
顺便说一句,你最好使用“setTimeout(function(){utility.getGeoData();},1000);” 我发现“document.addEventListener("deviceready", utility.getGeoData(), false);" 不适合我。
希望当您在上面找不到解决方案时会有所帮助:)
祝你好运!
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 文件。
由于我已经为同样的问题苦苦挣扎了好几天,终于找到了解决方案,所以我决定与仍然无法解决它的任何人分享它。
解决方案很简单:尽管我通过 phonegap 命令行界面添加了插件并且插件文件位于 /Plugins 目录中,但 www 目录中的 plugins 目录中缺少地理定位插件。因此,您只需将丢失的文件复制到 /www/plugins 即可。就这么简单。
如果有人需要丢失的文件:http ://d.pr/f/xqhq
顺便说一句:我正在使用科尔多瓦 3.2.0。
我希望这也适用于你!
将 Cordova 从 3.6 升级到 4.3 后出现此错误(以及许多其他错误)。
我认为升级过程中有一些失败,对我来说唯一可行的解决方案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}
并查看..
使用位置警报的权限仅选择您的捆绑显示名称!