更新记录

1.0.0(2023-11-30)

GPS定位、原生定位、App进程保活


平台兼容性

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

原生插件通用使用流程:

  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(192227519)联系作者;
  3. 本插件支持定制,定制费用另算;
  4. 请在合法范围内使用,若使用本插件做非法开发,本方概不负责。

Android保活设置

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

注意事项:

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

隐私、权限声明

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. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件为定位功能插件,会采集用户位置信息,但并不会使用用户位置信息,也不会发往任何服务器。

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

暂无用户评论。

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