cordovaiOS位置消息
我使用插件cordova-plugin-geolocation 。 我唯一的问题是,消息提示允许位置如下所示:
/var/container/bundle/application/xxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/my_project/www/index.html想使用你的位置。
反正有一点点性感,就像
my_project想使用你的位置
干杯。
为非信徒添加了一些代码
document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady(){ navigator.geolocation.getCurrentPosition(onLocationSuccess, onLocationError, {maximumAge:3000, timeout:2000, enableHighAccuracy:true}); function onLocationSuccess(){ } function onLocationError(){ } }
从文档 :
iOS的怪癖
从iOS 10开始,必须在info.plist中添加一个NSLocationWhenInUseUsageDescription条目。
NSLocationWhenInUseUsageDescription描述了应用程序访问用户位置的原因。 当系统提示用户允许访问时,该string显示为对话框的一部分。 要添加此条目,您可以在插件安装时传递variablesGEOLOCATION_USAGE_DESCRIPTION。
示例:cordova插件添加cordova-plugin-geolocation –variable GEOLOCATION_USAGE_DESCRIPTION =“您的使用信息”
如果你不传递variables,插件会添加一个空string作为值。
要解决您的问题,请尝试:
卸载插件:
cordova plugin remove cordova-plugin-geolocation
重新安装:
cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="my_project would like to use your location"
如果你的目标是iOS 8及更高版本(我认为,不再需要定位旧版本…),那么有两个键可用于configuration:
NSLocationAlwaysUsageDescription
这个键可以让你描述你的应用随时访问用户位置信息的原因。 当您的应用在前台或后台运行时以潜在的非显而易见的方式使用位置服务时,请包含此密钥。 例如,当社交应用使用位置信息来跟踪用户的位置并显示附近的其他用户时,该社交应用可能包括该密钥。 在这种情况下,应用程序正在跟踪用户的位置的事实可能并不明显。 当请求使用位置服务的许可时,系统在显示给用户的警报面板中包括该键的值。
NSLocationWhenInUseUsageDescription
这个键可以让你描述你的应用访问用户的位置信息的原因,而你的应用在前台运行,或者在使用时。 当您的应用使用位置服务直接跟踪用户的当前位置时,请添加此密钥。 此密钥不支持使用位置服务来监视区域或使用重要的位置更改服务来监视用户的位置。 当请求使用位置服务的许可时,系统在显示给用户的警报面板中包括该键的值。
所以在你的iOS项目info.plist
文件中,你可以添加以下内容:
<key>NSLocationAlwaysUsageDescription</key> <string>my_project requires constant access to your location, even when the screen is off.</string>
仅在使用应用程序时访问位置
<key>NSLocationWhenInUseUsageDescription</key> <string>my_project requires access to your location only when being used.</string>
有3个可能的原因显示index.html的path,而不是你的应用程序的名称:
- 您尚未安装插件(或未正确安装)
- 您不等待设备就绪事件来调用插件
- 您尚未链接index.html中的cordova.js文件
正如你所说,你已经安装了插件,并在设备就绪事件中使用它,那么一定是你忘记链接index.html中的cordova.js,或者插件安装不正确。 检查你的cordova.js链接,如果你有它,删除插件并再次添加,删除和重新添加iOS平台也可能有帮助
似乎cordova-plugin-geolocation的版本3.0.0忽略了安装参数
--variable GEOLOCATION_USAGE_DESCRIPTION=""
像布鲁诺·佩雷斯上面说的。
它工作正常,我安装2.4.3版本。