更新记录

1.0.0(2023-12-27)

*新账号发布


平台兼容性

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原生插件配置”->”云端插件“列表中删除该插件重新选择


特别提醒

  • 购买本插件前,请先试用,请先试用,请先试用,自测确认满足需求之后再行购买。虚拟物品一旦购买之后无法退款;
  • 如有使用上的疑问、bug,可以QQ(381996687)联系作者;
  • 作者可承接各种插件定制,价格美丽有意向可加q详谈;
  • 请在合法范围内使用,若使用本插件做非法开发,本方概不负责;
  • 请仔细阅读文档结合示例demo测试有问题加q联系作者;

插件功能介绍

  1. 定位、连续定位、后台定位(Android需要使用保活定位)

  2. 坐标转换

  3. 保活

Android后台采集或保活设置

  1. 通知管理允许通知,允许自启动;

  2. 耗电保护允许后台运行;

  3. 电池设置中关闭智能耗电保护、省电模式、应用速冻等。

注意事项:

  1. 本插件使用需要勾选Geolocation模块。填入申请的百度定位key。
  2. iOS后台采集需要在manifest.json -> App常用其它设置 中配置定位的后台运行能力;
  3. Android手机型号太多,各品牌对手机的限制不尽相同,需要保活而进行的设置也不一样。随着Android系统的更新迭代,保活的难度也在不断加大。最有效的保活方式还是联系厂家添加白名单以实现进程保活。

插件使用

定位

定位需要注意的地方:

  1. iOS后台定位定位间隔不能设置太大,应小于12秒
  2. 3.Android后台定位,请使用保活定位。

    • 引入插件
    const bdLocationModule = uni.requireNativePlugin('YT-BDLocation');
    • 设置定位坐标类型支持设置(bd09ll、gcj02、bd09、wgs84(wgs84仅iOS支持))默认bd09ll,设置定位经纬度需在定位前设置。需要修改坐标类型需重新调用下面方法。
    bdLocationModule.setLocationCoorType("gcj02") 
    • 单次定位
    /**
    * reGeocode:是否带有逆地理信息(获取逆地理信息需要联网)
    */
    bdLocationModule.startOnceLocationWithReGeocode({
    reGeocode: true, //定位是否返回逆地理信息 默认不返回
    reGeocodeTimeout: 10, //获取地址信息超时
    locationTimeout: 10 //设置位置获取超时时间 默认10秒
    // openGps:false
    }, res => {
    // res ={"province":"浙江省","locationDescribe":"在xxxxx附近","street":"xx路","countryCode":"0","cityCode":"179","town":"xx街道","lat":30.44676187736189,"code":"200","city":"杭州市","district":"xx区","lng":120.26363708577145,"streetNumber":"98","country":"中国","msg":"定位成功"}
    if (res.code == 200) {
        console.log(res)
    }
    });
  • 连续定位
bdLocationModule.startUpdatingLocation({
        reGeocode: true, //定位是否返回逆地理信息 默认不返回
        isAllow: true, //开启后台定位,默认不开启(Android后台定位需要使用保活定位,按官方设置后台定位没有效果)
        //连续定位间隔 默认10秒 (iOS sdk没有设置连续定位间隔的api,插件内部启动定时器来控制开始结束定位。所以这里设置locationInterval大于10时会影响后台定位)
        locationInterval: 10,//定位间隔
        locationTimeout: 10, //设置位置获取超时时间 默认10秒
        reGeocodeTimeout: 10, //设置获取地址信息超时时间 默认10秒
        openGps:true
    }, res => {
        // res ={"province":"浙江省","locationDescribe":"在xxx附近","street":"xx路","countryCode":"0","cityCode":"179","town":"xx街道","lat":30.44676187736189,"code":"200","city":"杭州市","district":"临平区","lng":120.26363708577145,"streetNumber":"98","country":"中国","msg":"定位成功"}
        this.localCount++;
        // res.loc_type定位类型 --- 61 gps定位成功 66:离线定位成功  161:网络定位成功---仅Android有效
        //altitude--高度--仅Android有效--需设置openGps:true
        //speed--速度仅Android有效 --需设置openGps:true
        uni.showToast({
            title: "定位成功次数:" + this.localCount,
            icon: 'none',
            duration: 1500
        })
        console.log(res)
    })
  • 取消连续定位
bdLocationModule.stopUpdatingLocation();
  • 保活定位(Android独有)
bdLocationModule.keepAlive({
        locationInterval: 5 //连续定位间隔--默认10秒
    }, res => {
        this.localCount++;
        uni.showToast({
            title: "定位成功次数:" + this.localCount,
            icon: 'none',
            duration: 1500
        })
    })

经纬度转换

经纬度转换悉知:iOS端其他坐标系转bd09ll是sdk自带的算法,其余转换是作者自己网上找的算法。

  • 引入插件
 const bdLocationModule = uni.requireNativePlugin('YT-BDLocation');
<!--gcj02ToBd09-->
let result = bdLocationModule.gcj02ToBd09(30.440541199534238, 120.25721120983569);
console.log(result)
<!--bd09ToGcj02-->
let result = bdLocationModule.bd09ToGcj02(30.44676187736189, 120.26363708577145);
<!--bd09ToWgs84-->
let result = bdLocationModule.bd09ToWgs84(30.44676187736189, 120.26363708577145);
<!--gcj02ToWgs84-->
let result = bdLocationModule.gcj02ToWgs84(30.44676187736189, 120.26363708577145);
<!--wgs84ToBd09 ios有效-->
let result = bdLocationModule.wgs84ToBd09(30.44676187736189, 120.26363708577145);

<!--wgs84ToGcj02 Android有效-->
let result = bdLocationModule.wgs84ToGcj02(30.44676187736189, 120.26363708577145);

隐私、权限声明

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

iOS: "NSLocationWhenInUseUsageDescription", "NSLocationAlwaysAndWhenInUseUsageDescription", "NSLocationAlwaysUsageDescription" Android: 注意: manifest.json权限配置中不包含后台定位和前台服务,需要在源码中自行添加 "<uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\" />", "<uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\" />" <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_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_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" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />

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

插件会采集用户位置信息,插件使用百度地图定位SDK,参考其官方网站https://lbsyun.baidu.com/ 和隐私政策 https://lbsyun.baidu.com/index.php?title=openprivacy

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

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