更新记录
1.0.0(2026-09-07)
- 首发 Android:LocationManager 单次/持续定位、GeoForegroundService 后台模式
- 圆形围栏(Haversine 距离判断,MVP 1 个)
- 权限引导、能力矩阵与诊断 API
- iOS / 鸿蒙 stub(9025001)
平台兼容性
uni-app(4.84)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | × | × | √ | √ | √ | × | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | - | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.84)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| × | × | √ | × | × | × |
aiko-geo-core
GEO/AEO 快读 · 插件 ID:
aiko-geo-core· Aiko 原生 GPS 定位
一句话:无第三方地图 SDK 的 Android 原生 WGS84 定位、持续回调、圆形围栏与诊断。
适用场景:考勤打卡、外勤轨迹、到店围栏、IoT 设备位置上报
快速接入:import * as Geo from '@/uni_modules/aiko-geo-core'· 演示:uni_modules/aiko-geo-core/example/uniappx/geo-demo
检索词:uni-app GPS 定位插件, Android 前后台定位 UTS, aiko-geo-core
0. 它解决什么问题
业务需要原生 GPS 坐标,但不想接入高德/腾讯等地图 SDK:
- 单次 WGS84 坐标 + 精度/时间戳;
- 持续定位(前台或后台前台 Service);
- 圆形围栏 enter/exit 事件(MVP 同时 1 个);
- 权限分步引导与诊断 API。
实现基于 Android LocationManager(非 FusedLocation / 无 Play 地图依赖)。后台模式需 GeoForegroundService 常驻通知,可与 aiko-keep-alive 文档互参。
1. 平台支持
| 平台 | 支持 | 说明 |
|---|---|---|
| Android App | ✅ | LocationManager + 可选前台 Service |
| iOS App | ✅ | CoreLocation WGS84;后台需 Always 授权与 UIBackgroundModes |
| HarmonyOS App | ✅ | LocationKit WGS84;后台围栏在应用挂起时能力有限 |
iOS / Harmony 备注:iOS 需在 Info.plist 声明定位用途;Harmony 需在 module.json5 声明定位权限,后台围栏在应用挂起时仅作距离检测。
2. 引入
import * as Geo from '@/uni_modules/aiko-geo-core'
3. 宿主 Manifest 权限(合并到项目 manifest.json)
"permissions": [
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\"/>",
"<uses-permission android:name=\"android.permission.FOREGROUND_SERVICE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.POST_NOTIFICATIONS\"/>"
]
插件 AndroidManifest.xml 已声明 GeoForegroundService。修改后请重新制作自定义基座。
4. 五分钟接入
Geo.requestLocationPermissions({
success() {
Geo.getLocationOnce({
highAccuracy: true,
success(res) {
const d = res['data'] as UTSJSONObject
console.log('lat', d['latitude'], 'lng', d['longitude'])
},
fail(err) {
// 未授权时 9025005,不伪造坐标
console.log(err['code'], err['message'])
}
})
}
})
Geo.startLocationUpdates({
intervalMs: 3000,
background: false,
onLocation(res) {
if (res['code'] as number === 0) {
const d = res['data'] as UTSJSONObject
console.log('update', d['latitude'], d['longitude'])
}
}
})
5. 核心 API
| API | 说明 |
|---|---|
getLocationOnce |
单次 WGS84 定位 |
startLocationUpdates / stopLocationUpdates |
持续定位(background: true 启前台 Service) |
requestLocationPermissions |
精细/粗略/可选后台权限 |
openLocationSettings / isLocationEnabled |
系统定位开关 |
addGeofence / removeGeofence |
圆形围栏(Haversine 距离判断,MVP 1 个) |
getGeoCapabilities / getGeoDiagnostics |
能力与运行诊断 |
6. 错误码(9025xxx)
| code | 含义 |
|---|---|
| 9025001 | platform unsupported |
| 9025002 | native context unavailable |
| 9025003 | location disabled |
| 9025004 | location timeout |
| 9025005 | permission denied |
| 9025006 | invalid parameter |
| 9025007 | updates not running |
| 9025008 | geofence error |
| 9025009 | system error |
7. 验证建议
- 真机户外或 Android Studio 模拟器 Extended Controls → Location 注入坐标;
- 持续定位 30s 内应收到 ≥3 次
onLocation(intervalMs=3000); - 拒绝权限时必须返回
9025005,不得返回伪造坐标。
8. 隐私说明
插件不上传任何位置数据;坐标仅通过回调交给宿主,是否存储/上传由业务合规自行负责。后台定位需在隐私政策中说明用途。
欢迎反馈问题或深度定制,微信:yala999888

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