更新记录

1.0.5(2023-09-05)

1、解决同时勾选Geolocation、Maps模块打包失败问题。

1.0.4(2023-09-04)

1、解决插件与Maps模块内置SDK冲突问题。

1.0.3(2023-08-30)

1、兼容Android 13,解决部分机型高版本闪退问题; 2、优化Android通知栏; 3、增加权限"<uses-permission android:name=\"android.permission.DISABLE_KEYGUARD\" />" ; 4、iOS两坐标点间距离计算修改,与Android保持一致。

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 适用版本区间:11 - 16

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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原生插件配置”->”云端插件“列表中删除该插件重新选择


插件使用说明

插件声明

  1. 购买本插件前,请先试用,并充分自测确认满足需求之后再行购买。一经购买,概不退还;
  2. 如有使用上的疑问、bug或者需求建议,可以QQ群(345533496)反馈;
  3. 请在合法范围内使用,若使用本插件做非法开发,本方概不负责。

Android保活设置

  1. 开启定位、后台定位权限,通知管理允许通知,允许自启动;
  2. 耗电保护允许后台运行;
  3. 电池设置中关闭智能耗电保护、省电模式、应用速冻等。

注意事项:

  1. 本插件使用需要勾选Geolocation模块;
  2. iOS开启后台定位即开启进程保活,需要在manifest.json -> App常用其它设置,配置定位的后台运行能力;
  3. 若要自定义连续定位时间间隔,iOS的连续定位间隔需控制在15s以内,不然会影响后台定位以及进程保活;
  4. Android手机型号太多,各品牌对手机的限制不尽相同,需要保活而进行的设置也不一样。随着Android系统的更新迭代,保活的难度也在不断加大。最有效的保活方式还是联系厂家添加白名单以实现进程保活。

插件引入

首先需要通过 uni.requireNativePlugin("ModuleName") 获取 module

var aliveModule = uni.requireNativePlugin('LY-DCLocationAlive-LocationAliveModule');

组件Api说明

1 定位

1.1 定位配置项

方法说明:若不需要自定义,此API可以不调用。

特别注意:iOS的连续定位间隔需控制在15s以内,不然会影响后台定位以及进程保活。

aliveModule.initLocationConfig(config)

config 参数说明

成员名 数据类型 必填 说明 适用
locationTimeout int 指定单次定位超时时间, 默认5s Android、iOS
reGeocodeTimeout int 单次定位逆地理超时时间, 默认5s iOS
locationInterval int 连续定位时间间隔, 默认10s Android、iOS

1.2 单次定位

aliveModule.requestLocationWithReGeocode(withReGeocode, callback);

参数说明

成员名 数据类型 必填 说明 适用
withReGeocode Boolean 是否需要地址信息 Android、iOS
callback function 结果回调 Android、iOS

callback参数说明

成员名 数据类型 说明 适用
code int 状态, -1为成功, 具体请参照高德官方SDK Android、iOS
errMsg String 错误描述 Android、iOS
latitude double 纬度 Android、iOS
longitude double 经度 Android、iOS
address Map 地址信息 Android、iOS

address参数说明

成员名 数据类型 说明 适用
formattedAddress String 格式化地址 Android、iOS
country String 国家 Android、iOS
province String 省/直辖市 Android、iOS
city String 城市 Android、iOS
district String Android、iOS
citycode String 城市编码 Android、iOS
adcode String 区域编码 Android、iOS
street String 街道名称 Android、iOS
number String 门牌号 Android、iOS
POIName String 兴趣点名称 Android、iOS
AOIName String 所属兴趣点名称 Android、iOS

1.3 持续定位

请注意:

1、iOS如果允许后台定位(allowBackground=true),则必须在manifest.json中配置定位的三个权限(没有权限不能后台定位)、以及定位后台运行能力(不配会闪退)。如此App就具备了保活能力。

2、iOS如果不允许后台定位(allowBackground=false),则只需要配置App使用期间的定位权限即可。定位后台运行能力也不需要配置。

3、配置请见插图

aliveModule.startUpdatingLocation(withReGeocode, allowBackground, callback);

参数说明

成员名 数据类型 必填 说明 适用
withReGeocode Boolean 是否需要地址信息 Android、iOS
allowBackground Boolean 是否允许后台定位 Android、iOS
callback function 结果回调, 参照单次定位 Android、iOS

1.4 关闭定位

aliveModule.stopUpdatingLocation();

1.5 保活 - 仅限Android使用

保活会自行开启定位,不需要再调用其他获取定位的Api。

aliveModule.keepAlive(callback);

参数说明

成员名 数据类型 必填 说明
callback function 结果回调, 参照单次定位

1.6 关闭保活 - 仅限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);

2.7 其他坐标系转高德坐标系 - 仅支持Android (高德定位SDK_API, iOS坐标系转换API在地图SDK内, 但是地图SDK体积太大, 无谓的增加包体积, 不划算)

aliveModule.convertToAmapCoordinate(sourceCoordType, latitude, longitude, callback);

参数说明

成员名 数据类型 必填 说明 适用
sourceCoordType String 待转换坐标系 Android
latitude double 待转换坐标 - 纬度 Android
longitude double 待转换坐标 - 经度 Android
callback function 结果回调 Android

sourceCoordType 参数, 能且仅能为下方字符串之一("BAIDU"或"MAPBAR"或"MAPABC"等)

BAIDU、MAPBAR、MAPABC、SOSOMAP、ALIYUN、GOOGLE、GPS

callback参数说明

成员名 数据类型 说明 适用
latitude double 纬度 Android
longitude double 经度 Android

3 位置判断与距离计算

3.1 判断指定位置是否在大陆以及港、澳地区。

let isAvailable = aliveModule.isAMapDataAvailable(latitude, longitude);

参数说明

成员名 数据类型 必填 说明 适用
latitude double 纬度 Android、iOS
longitude double 经度 Android、iOS
isAvailable Boolean * 返回值 Android、iOS

3.2 计算两点间的距离(米)

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

参考

iOS 错误码

成员名 说明
AMapLocationErrorUnknown 1 未知错误
AMapLocationErrorLocateFailed 2 定位错误
AMapLocationErrorReGeocodeFailed 3 逆地理错误
AMapLocationErrorTimeOut 4 超时
AMapLocationErrorCanceled 5 取消
AMapLocationErrorCannotFindHost 6 找不到主机
AMapLocationErrorBadURL 7 URL异常
AMapLocationErrorNotConnectedToInternet 8 连接异常
AMapLocationErrorCannotConnectToHost 9 服务器连接失败
AMapLocationErrorRegionMonitoringFailure 10 地理围栏错误
AMapLocationErrorRiskOfFakeLocation 11 存在虚拟定位风险
AMapLocationErrorNoFullAccuracyAuth 12 精确定位权限异常

Android 错误码

成员名 说明
ERROR_CODE_INVALID_PARAMETER 1 *
ERROR_CODE_FAILURE_WIFI_INFO 2 *
ERROR_CODE_FAILURE_LOCATION_PARAMETER 3 *
ERROR_CODE_FAILURE_CONNECTION 4 *
ERROR_CODE_FAILURE_PARSER 5 *
ERROR_CODE_FAILURE_LOCATION 6 *
ERROR_CODE_FAILURE_AUTH 7 *
ERROR_CODE_UNKNOWN 8 *
ERROR_CODE_FAILURE_INIT 9 *
ERROR_CODE_SERVICE_FAIL 10 *
ERROR_CODE_FAILURE_CELL 11 *
ERROR_CODE_FAILURE_LOCATION_PERMISSION 12 *
ERROR_CODE_FAILURE_NOWIFIANDAP 13 *
ERROR_CODE_FAILURE_NOENOUGHSATELLITES 14 *
ERROR_CODE_FAILURE_SIMULATION_LOCATION 15 *
ERROR_CODE_AIRPLANEMODE_WIFIOFF 18 *
ERROR_CODE_NOCGI_WIFIOFF 19 *
ERROR_CODE_FAILURE_COARSE_LOCATION 20 *
ERROR_CODE_NO_COMPENSATION_CACHE 33 *

隐私、权限声明

1. 本插件需要申请的系统权限列表:

iOS "NSLocationWhenInUseUsageDescription", "NSLocationAlwaysAndWhenInUseUsageDescription", "NSLocationAlwaysUsageDescription" Android "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />", "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />", "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\" />", "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\" />", "<uses-permission android:name=\"android.permission.INTERNET\" />", "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />", "<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />", "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />", "<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\" />", "<uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\" />", "<uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\" />", "<uses-permission android:name=\"android.permission.WAKE_LOCK\" />", "<uses-permission android:name=\"android.permission.DISABLE_KEYGUARD\" />" 版本1.0.3新增权限 "<uses-permission android:name=\"android.permission.SCHEDULE_EXACT_ALARM\" />" 注意: manifest.json权限配置中不包含以下权限,需要在源码中自行添加 "<uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\" />", "<uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\" />" 版本1.0.3新增权限 "<uses-permission android:name=\"android.permission.SCHEDULE_EXACT_ALARM\" />"

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件会采集用户位置信息,插件使用高德地图定位SDK,参考其官方网站https://lbs.amap.com 和个人信息保护声明 https://lbs.amap.com/api/compliance-center/ability/data-security

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

不包含广告

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问