更新记录
1.0.1(2025-10-25)
- 更新文档
1.0.0(2025-10-25)
- 新版发布
平台兼容性
uni-app(4.71)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | √ | 5.0 | 12 | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × |
uni-app x(4.71)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | 5.0 | 12 | √ | × |
yt-native-location
开发文档
插件是对原生(iOS、Android、HarmonyOS)定位的封装,主要功能单次定位、连续定位、保活定位。App退到后台可持续定位不被系统挂起和回收,达到保活效果。插件默认返回WGS_84坐标,支持坐标转换功能。
特别提醒
- 购买本插件前,请先试用、请先试用、请先试用,并充分自测确认满足需求之后再行购买。购买之后无法退款;
- 如有使用上的疑问、bug,可以进交流群联系作者;
- 结合文档和示例代码集成使用;
- 遇到使用问题进交流群询问;
- 试用必须先打基座、试用必须先打基座、试用必须先打基座重要事情说三遍(ios/android);
插件功能介绍 (支持uni-app/uni-app-x)
- 定位、连续定位、后台定位、保活定位
- 保活定位
- 坐标转换
Android后台采集或保活设置
-
通知管理允许通知,允许自启动;
-
耗电保护允许后台运行;
-
电池设置中关闭智能耗电保护、省电模式、应用速冻等。
注意事项:
- 本插件使用需要打自定义基座调试、试用。
- Android手机型号太多,各品牌对手机的限制不尽相同,需要保活而进行的设置也不一样。随着Android系统的更新迭代,保活的难度也在不断加大。最有效的保活方式还是联系厂家添加白名单以实现进程保活。
- 定位返回WGS84坐标,如需要其他坐标系,可使用插件内置的坐标转换方法。
- android修改通知栏的图标只需替换uni_modules/yt-native-location/utssdk/app-android/res/drawable/logo.png图标,替换的图标名称不能修改必须是logo.png,替换完需要重新打基座/包才能生效
特别注意HarmonyOS后台定位需配置后台功能。配置步骤如下:
- 点击运行->运行到手机/模拟器->运行到鸿蒙
- 运行成功会在项目根目录下生成unpackage文件夹,找到unpackage/dist/dev/app-harmony/entry,将该文件夹复制到项目根目录下的harmony-configs文件夹下
- 在harmony-configs/entry/src/main/module.json5文件中增加设置如一下代码
- 不明白可以进交流群询问作者。
更多好用插件
- 高德定位连续定位后台定位保活定位
- 百度汽车摩托车导航插件
- 百度鹰眼轨迹插件支持后台采集、保活
- 百度定位插件、连续定位、保活、坐标系转换、支持双端
- 科大讯飞】离线语音合成(新版)插件
- 计步器插件,支持Android、iOS双端
- uts经典蓝牙插件、蓝牙电子秤
- 获取唯一标识、ServiceID、卸载更新不变iOS+Android
- Android经典蓝牙
- 华为ScanKit统一扫码插件支持iOS+Android原生插件
- 【华为扫码】统一扫码插件支持多码连续扫码支持半屏扫码uts插件iOS+Android+HarmonyOS
- 截屏、录屏、防截屏、录屏iOS、Android
- 人脸采集插件 最新百度SDK 离线人脸采集、活体检测
- 页面截长图、截取WebView内容,生成长截图Android+iOS
- 百度OCR识别插件
- Android无预览拍照、录制、静默拍照、静默录制、抓拍插件支持
- uni高德地图功能拓展地图截图
集成文档
import * as Location from "@/uni_modules/yt-native-location"
接口说明
- 基础配置 configureBasicConfiguration 在定位前调用
Location.configureBasicConfiguration({
onceLocationTimeout: 5000, //单次定位超时时间
locationInterval: 4000, //连续定位、保活定位间隔
notificationTitle: "App后台定位中",//Android 通知标题
notificationContentText: "后台定位" //Android通知内容
})
| 参数 | 参数类型 | 参数说明 | 是否必传 |
|---|---|---|---|
| onceLocationTimeout | number | 单次定位超时时间,默认5000单位毫秒 | 否 |
| locationInterval | number | 连续定位、保活定位间隔默认10000单位毫秒 | 否 |
| notificationTitle | string | Android 通知标题,默认“适配android 8限制后台定位功能“ | 否 |
| notificationContentText | string | Android通知内容,默认“正在后台定位” | 否 |
特别注意: HarmonyOS连续定位间隔Gnss与网络定位不同,默认值在GNSS定位时为1秒,网络定位时为20秒。 当设置值小于最小间隔时,以最小时间间隔生效。例:在室内由于GPS信号弱或没有,这时会使用网络定位,网络定位的时间间隔最小为20秒,当设置的locationInterval小于20时,连接定位的间隔会去最小值20.
- 单次定位
Location.onceLocation({
locationResultBackcall: (res) => {
if (res.code == 200) {
uni.showToast({
icon: 'none',
title: `定位成功--精度:${res.location?.longitude}----纬度:${res.location?.latitude}`
})
} else {
uni.showToast({
icon: "none",
title: `${res.mes}`
})
}
}
});
单次定位OnceLocationOptions参数说明:
| 参数 | 参数类型 | 参数说明 | 是否必传 |
|---|---|---|---|
| locationResultBackcall | function | 单次定位回调(回调信息LocationInfoResult) | 是 |
LocationInfoResult 说明:
| 数据 | 数据类型 | 数据说明 |
|---|---|---|
| code | number | 定位状态码,200成功 |
| mes | string | 定位描述 |
| location | LocationInfo | 定位成功信息,定位成功才有此值,详情见下表 |
LocationInfo 说明:
| 数据 | 数据类型 | 数据说明 |
|---|---|---|
| latitude | number | 纬度 |
| longitude | number | 经度 |
| latitude | number | 纬度 |
| altitude | number | 高度 |
| sourceType | number | 定位类型 1:gnss 2:NETWORK 3:INDOOR 4:RTK 仅HarmonyOS有效 |
- 连续定位
Location.startUpdatingLocation({
enableBackgroundLocation: false,//是否后台定位,iOS端enableBackgroundLocation=true表示保活定位,Android保活定位需调用保活接口(keepLiveLocation)
locationResultBackcall: (res) => {
if (res.code == 200) {
uni.showToast({
icon: 'none',
title: `定位次数:${this.locationCount}精度:${res.location?.longitude}----纬度:${res.location?.latitude}`
})
} else {
uni.showToast({
icon: "none",
title: `${res.mes}`
})
}
}
})
UpdatingLocationOptions 参数说明:
| 参数 | 参数类型 | 参数说明 | 是否必传 |
|---|---|---|---|
| enableBackgroundLocation | bool | 是否后台定位,iOS/HarmonyOS设置为true就相当于保活定位 | 否 |
| locationResultBackcall | function | 连续定位回调(回调信息LocationInfoResult数据结构同单次定位回调结构详情见上表) | 是 |
- 停止连续定位
Location.stopUpdatingLocation()
- 保活定位 保活定位参数同连续定位(保活定位的enableBackgroundLocation默认是true且不可修改)
Location.keepLiveLocation({
locationResultBackcall: (res) => {
if (res.code == 200) {
uni.showToast({
icon: 'none',
title: `定位次数:${this.locationCount}精度:${res.location?.longitude}----纬度:${res.location?.latitude}`
})
} else {
uni.showToast({
icon: "none",
title: `${res.mes}`
})
}
}
})
- 关闭保活
Location.offKeepLiveLocation()
坐标系转换
插件返回的是WGS_84坐标,需要转换其他坐标,可使用插件内的转换函数。
gcj02ToWgs84() {
let result = Location.gcj02ToWgs84(30.34524, 120.154624);
console.log(result)
},
bd09ToWgs84() {
let result = Location.bd09ToWgs84(30.34524, 120.154624);
console.log(result)
},
bd09ToGcj02() {
let result = Location.bd09ToGcj02(30.34524, 120.154624);
console.log(result)
},
gcj02ToBd09() {
let result = Location.gcj02ToBd09(30.34524, 120.154624);
console.log(result)
},
wgs84_gcj02() {
let result = Location.wgs84_gcj02(30.34524, 120.154624);
console.log(result)
},
wgs84ToBd09() {
let result = Location.wgs84ToBd09(30.34524, 120.154624);
console.log(result)
}
uniapp 示例代码
<template>
<view class="content">
<view class="header">
<view class="btn" @click="onceLocationAction()">单次定位</view>
<view class="btn" @click="startUpdatingLocationAction()">连续定位</view>
<view class="btn" @click="keepAliveAction()">保活定位</view>
</view>
<view class="header">
<view class="btn" @click="stopUpdatingLocationAction()">停止连续定位</view>
<view class="btn" @click="nonKeepAliveAction()">停止保活</view>
</view>
</view>
</template>
<script>
import * as Location from "@/uni_modules/yt-native-location"
export default {
data() {
return {
locationCount: 0
}
},
onLoad() {
Location.configureBasicConfiguration({
onceLocationTimeout: 5000,//单次定位超时时间,可选参数仅Android有效
locationInterval: 4000,//连续定位、保活定位间隔 可选参数默认10秒
notificationTitle: "App后台定位中",//保活前台通知栏 标题、仅Android有效
notificationContentText: "正在后台定位"//保活前台通知栏 内容、仅Android有效
})
},
methods: {
onceLocationAction() {
Location.onceLocation({
locationResultBackcall: (res) => {
if (res.code == 200) {
this.locationCount++;
uni.showToast({
icon: 'none',
title: `定位成功--精度:${res.location?.longitude}----纬度:${res.location?.latitude}`
})
} else {
uni.showToast({
icon: "none",
title: res.mes
})
}
}
});
},
//连续定位
startUpdatingLocationAction() {
Location.startUpdatingLocation({
enableBackgroundLocation: false,
locationResultBackcall: (res) => {
if (res.code == 200) {
this.locationCount++;
uni.showToast({
icon: 'none',
title: `定位次数:${this.locationCount}精度:${res.location?.longitude}----纬度:${res.location?.latitude}`
})
} else {
uni.showToast({
icon: "none",
title: res.mes
})
}
}
})
},
//停止连续定位
stopUpdatingLocationAction() {
this.locationCount = 0
Location.stopUpdatingLocation()
},
//保活
keepAliveAction() {
Location.keepLiveLocation({
locationResultBackcall: (res) => {
console.log('1111111111111')
if (res.code == 200) {
this.locationCount++;
uni.showToast({
icon: 'none',
title: `定位次数:${this.locationCount}精度:${res.location?.longitude}----纬度:${res.location?.latitude}`
})
} else {
uni.showToast({
icon: "none",
title: res.mes
})
}
}
})
},
//停止保活
nonKeepAliveAction() {
this.locationCount = 0
Location.offKeepLiveLocation()
}
}
}
</script>
<style>
.content {
width: 750rpx;
display: flex;
height: 100%;
flex-direction: column;
}
.header {
width: 750rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 0 10rpx;
margin-top: 40rpx;
box-sizing: border-box;
}
.btn {
display: flex;
height: 80rpx;
flex: 1;
align-items: center;
justify-content: center;
background-color: cadetblue;
color: white;
margin-right: 10rpx;
font-size: 28rpx;
}
</style>
uni-app-x示例代码
<template>
<view class="content">
<view class="header">
<view class="btn" @click="onceLocationAction()">单次定位</view>
<view class="btn" @click="startUpdatingLocationAction()">连续定位</view>
<view class="btn" @click="keepAliveAction()">保活定位</view>
</view>
<view class="header">
<view class="btn" @click="stopUpdatingLocationAction()">停止连续定位</view>
<view class="btn" @click="nonKeepAliveAction()">停止保活</view>
</view>
</view>
</template>
<script>
import * as Location from "@/uni_modules/yt-native-location"
export default {
data() {
return {
locationCount: 0
}
},
onLoad() {
Location.configureBasicConfiguration({
onceLocationTimeout: 5000,//单次定位超时时间,
locationInterval: 4000,//连续定位、保活定位间隔 可选参数默认10秒
notificationTitle: "App后台定位中",//保活前台通知栏 标题、仅Android有效
notificationContentText: "正在后台定位"//保活前台通知栏 内容、仅Android有效
})
},
methods: {
onceLocationAction() {
Location.onceLocation({
locationResultBackcall: (res) => {
if (res.code == 200) {
this.locationCount++;
uni.showToast({
icon: 'none',
title: `定位成功:${this.locationCount}---精度:${res.location?.longitude}----纬度:${res.location?.latitude}`
})
} else {
uni.showToast({
icon: "none",
title: `${res.mes}`
})
}
}
});
},
//连续定位
startUpdatingLocationAction() {
Location.startUpdatingLocation({
enableBackgroundLocation: false,
locationResultBackcall: (res) => {
if (res.code == 200) {
this.locationCount++;
uni.showToast({
icon: 'none',
title: `定位次数:${this.locationCount}---精度:${res.location?.longitude}----纬度:${res.location?.latitude}`
})
}
}
} as Location.UpdatingLocationOptions)
},
//停止连续定位
stopUpdatingLocationAction() {
this.locationCount = 0
Location.stopUpdatingLocation()
},
//保活
keepAliveAction() {
Location.keepLiveLocation({
locationResultBackcall: (res) => {
console.log('1111111111111')
if (res.code == 200) {
this.locationCount++;
uni.showToast({
icon: 'none',
title: `定位次数:${this.locationCount}---精度:${res.location?.longitude}----纬度:${res.location?.latitude}`
})
}
}
})
},
//停止保活
nonKeepAliveAction() {
this.locationCount = 0
Location.offKeepLiveLocation()
}
}
}
</script>
<style>
.content {
width: 750rpx;
display: flex;
height: 100%;
flex-direction: column;
}
.header {
width: 750rpx;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 0 10rpx;
margin-top: 40rpx;
box-sizing: border-box;
}
.btn {
display: flex;
height: 80rpx;
flex: 1;
align-items: center;
justify-content: center;
background-color: cadetblue;
color: white;
margin-right: 10rpx;
font-size: 28rpx;
}
</style>

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 203
赞赏 0
下载 10632152
赞赏 1792
赞赏
京公网安备:11010802035340号