DCloud_App_Array
DCloud_App_Array
  • 发布:2016-06-22 16:40
  • 更新:2021-10-18 14:57
  • 阅读:23206

iOS切换到后台支持获取位置信息功能

分类:HTML5+

此文档不再维护,请参考新文档地址: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将无法同步返回数据

iOS切换到后台支持音乐播放功能
iOS更多后台能力可参考苹果官方文档

4 关注 分享
Trust a***@qq.com AJXMJC 来学习

要回复文章请先登录注册

codecat

codecat

有个问题,包括android里,用watchPosition后是不是就不用uni.getLocation了,还需要定时器定时执行watchPosition获取位置吗?
2021-10-18 14:57
Rudy001

Rudy001

用的不是很顺
2021-07-08 12:36
1***@qq.com

1***@qq.com

ios 为什么只回调一次
2021-07-08 11:31
9***@qq.com

9***@qq.com

真机运行支持 bd09ll 精确定位、打测试包时无法获取定位是什么情况啊?
2021-07-01 13:31
7***@qq.com

7***@qq.com

回复 z***@163.com :
老哥 偶尔可以 偶尔 没有 是啥原因啊 你解决了吗
2020-03-19 09:36
1***@qq.com

1***@qq.com

回复 白罂粟 :
我也是感觉有时候可以有时候不可以,请问你怎么解决的呀
2020-01-20 11:09
kim猴

kim猴

拔掉数据线就不行,接上数据线就可以
2019-12-18 11:01
xqd93

xqd93

在plus -> distribute -> apple 下添加以下数据,是apple还是ios?
2019-11-24 13:43
z***@163.com

z***@163.com

回复 z***@163.com :
搞错了,这代码没问题,云打包后可以正常留在后台,调试的时候不行~
2019-09-10 17:02
z***@163.com

z***@163.com

升级到12.4.1这个代码失效了,运行不到2分钟就被清掉了
2019-09-10 15:42