此文档不再维护,请参考新文档地址:https://uniapp.dcloud.io/tutorial/app-ios-uibackgroundmodes
HBuilderX默认生成的应用在iOS是不支持后台运行,当应用切换到后台时应用停止运行,下次切换到前台继续运行。
如果要支持应用切换到后台后继续运行获取位置需要进行额外配置参数操作。
可视化配置
打开项目的manifest.json文件,在“(App)常用其它设置”项的“iOS设置”下“后台运行能力”的输入框中填入location
如果可视化界面中没有此项配置,请参考下面“源码视图配置”。
注意:如果提示“暂不支持数组格式的查看和修改,请在源码视图中查看和修改”,说应用之前通过源码视图配置过,请参考下面源码视图配置
源码视图配置
打开项目的manifest.json文件,选择“源码视图”项
- 5+ App项目
在 "plus" -> "distribute" -> "apple" 下添加 "UIBackgroundModes"字段 - uni-app项目
在 "app-plus" -> "distribute" -> "ios" 下添加 "UIBackgroundModes"字段
UIBackgroundModes字段值为字符串数组类型,输入location表示支持后台定位:
// ...
"UIBackgroundModes": ["location"],
// ...
如果需要同时支持后台定位和后台播放音乐,UIBackgroundModes字段值可配置为["audio","location"]
注意事项
在应用切换到后台之前需要调用监听位置变化API(plus.geolocation.watchPosition):
并且设置开启 'enableHighAccuracy ': true
关闭地址解析 'geocode': false
// ...
var watchId = plus.geolocation.watchPosition( function ( p ) {
console.log( "监听位置变化信息:" );
console.log( JSON.stringify(p) );
}, function ( e ) {
console.log( "监听位置变化信息失败:"+e.message );
}, {'enableHighAccuracy':true,'geocode': false} );
// ...
注意:真机运行不支持此功能,需要提交到打App云端打包才生效
应用切换到后台持续时,需要避免调用同步5+ API(调用直接返回数据的API),在后台运行时此类API将无法同步返回数据