更新记录
1.0.1(2024-04-30)
1、兼容Android 14系统
1.0.0(2023-11-30)
GPS定位、原生定位、App进程保活
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 14.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | 适用版本区间:11 - 17 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
插件使用说明
插件声明
- 购买本插件前,请先试用,并充分自测确认满足需求之后再行购买。一经购买,概不退还;
- 如有使用上的疑问、bug或者要求定制插件,可以QQ(192227519)联系作者;
- 本插件支持定制,定制费用另算;
- 请在合法范围内使用,若使用本插件做非法开发,本方概不负责。
Android保活设置
- 开启定位、后台定位权限,通知管理允许通知,允许自启动;
- 耗电保护允许后台运行;
- 电池设置中关闭智能耗电保护、省电模式、应用速冻等。
注意事项:
- iOS开启后台定位即开启进程保活,需要在manifest.json -> App常用其它设置,配置定位的后台运行能力;
- 若要自定义连续定位时间间隔,iOS的连续定位间隔需控制在15s以内,不然会影响后台定位以及进程保活;
- Android手机型号太多,各品牌对手机的限制不尽相同,需要保活而进行的设置也不一样。随着Android系统的更新迭代,保活的难度也在不断加大。最有效的保活方式还是联系厂家添加白名单以实现进程保活。
- Android保活和持续定位、单次定位Api不可同时使用。如需获取当前定位,请缩短定位间隔(3s)取保活中的最新一次定位使用。
插件引入
本地插件引入: 请将插件放入HBuilderX工程根目录nativeplugins文件下,若不存在请自行创建,然后在 "manifest.json --> App原生插件配置" 中勾选本地插件。
云插件引入: https://blog.csdn.net/qq_41088660/article/details/134029690
插件使用:首先需要通过 uni.requireNativePlugin("ModuleName") 获取 module
var aliveModule = uni.requireNativePlugin('LY-DCNativeLocation-NativeLocationModule');
组件Api说明
1 定位
1.1 定位配置项
方法说明:若不需要自定义,此API可以不调用。
特别注意:iOS的连续定位间隔需控制在5s以内,不然会影响后台定位以及进程保活。
aliveModule.initLocationConfig(config)
config 参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
locationInterval | int | 否 | 连续定位时间间隔, 默认10s | Android、iOS |
notificationContentTitle | String | 否 | 保活前台通知栏 标题 | Android |
notificationContentText | String | 否 | 保活前台通知栏 上下文内容 | Android |
1.2 单次定位
aliveModule.startOnceLocation(callback);
参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
callback | function | 否 | 结果回调 | Android、iOS |
callback参数说明
成员名 | 数据类型 | 说明 | 适用 |
---|---|---|---|
code | int | 状态, -1为成功 | Android、iOS |
errMsg | String | 错误描述 | Android、iOS |
location | Map | 当前定位 | Android、iOS |
network | Map | 网络定位 | Android |
gps | Map | gps定位 | Android |
location、network、gps参数说明
成员名 | 数据类型 | 说明 | 适用 |
---|---|---|---|
altitude | double | 海拔 | Android、iOS |
latitude | double | 纬度 | Android、iOS |
longitude | double | 经度 | Android、iOS |
1.3 持续定位
请注意:
1、iOS如果允许后台定位(allowBackground=true),则必须在 "manifest.json --> App权限配置" 中配置定位的三个权限(没有权限不能后台定位),以及在 "manifest.json --> App其它设置 --> 后台运行能力" 配置定位后台运行能力(不配会闪退)。如此App就具备了保活能力。
2、iOS如果不允许后台定位(allowBackground=false),则只需要配置App使用期间的定位权限即可。定位后台运行能力也不需要配置。
3、配置请见插图
aliveModule.startUpdatingLocation(allowBackground, callback);
参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
allowBackground | Boolean | 是 | 是否允许后台定位 | Android、iOS |
callback | function | 否 | 结果回调, 参照单次定位 | Android、iOS |
1.4 关闭定位
aliveModule.stopUpdatingLocation();
1.5 定位权限是否开启
let flag = aliveModule.isLocationPermissionGranted();
let flag = aliveModule.isLocationPermissionGranted();
let str = (true == flag) ? "已开启定位权限" : "定位权限未开启";
uni.showToast({
icon: 'none',
title: str,
mask: true
})
1.6 后台定位权限是否开启
let flag = aliveModule.isBackgroundPermissionGranted();
let flag = testModule.isBackgroundPermissionGranted();
let str = (true == flag) ? "已开启后台定位权限" : "后台定位权限未开启";
uni.showToast({
icon: 'none',
title: str,
mask: true
})
1.7 保活 - 仅限Android使用
保活会自行开启定位,不需要再调用其他获取定位的Api。
aliveModule.keepAlive(callback);
参数说明
成员名 | 数据类型 | 必填 | 说明 |
---|---|---|---|
callback | function | 否 | 结果回调, 参照单次定位 |
1.8 关闭保活 - 仅限Android使用
aliveModule.nonKeepAlive();
2 坐标系转换
2.1 百度09坐标系 --> 国测局坐标系
let coord = aliveModule.bd09ToGcj02(latitude, longitude);
请求参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
latitude | double | 是 | 待转换坐标 - 纬度 | Android、iOS |
longitude | double | 是 | 待转换坐标 - 经度 | Android、iOS |
coord | Map | 否 | 返回值 | Android、iOS |
coord返回值说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
latitude | double | 是 | 转换后坐标 - 纬度 | Android、iOS |
longitude | double | 是 | 转换后坐标 - 经度 | Android、iOS |
2.2 wgs84坐标系 --> 国测局坐标系
参数请参照2.1
let coord = aliveModule.wgs84ToGcj02(latitude, longitude);
2.3 国测局坐标系 --> 百度09坐标系
参数请参照2.1
let coord = aliveModule.gcj02ToBd09(latitude, longitude);
2.4 wgs84坐标系 -->百度09坐标系
参数请参照2.1
let coord = aliveModule.wgs84ToBd09(latitude, longitude);
2.5 百度09坐标系 --> wgs84坐标系
参数请参照2.1
let coord = aliveModule.bd09ToWgs84(latitude, longitude);
2.6 国测局坐标系 --> wgs84坐标系
参数请参照2.1
let coord = aliveModule.gcj02ToWgs84(latitude, longitude);
3 位置判断与距离计算
3.1 计算两点间的距离(米)
let distance = aliveModule.calculateLineDistance(lat1, lng1, lat2, lng2);
参数说明
成员名 | 数据类型 | 必填 | 说明 | 适用 |
---|---|---|---|---|
lat1 | double | 是 | 坐标点1 - 纬度 | Android、iOS |
lng1 | double | 是 | 坐标点1 - 经度 | Android、iOS |
lat2 | double | 是 | 坐标点2 - 纬度 | Android、iOS |
lng2 | double | 是 | 坐标点2 - 经度 | Android、iOS |