翻相册想不起去过哪——这个问题被我用一个鸿蒙/iOS App 解决了
·
问题的起点
去年年底翻相册,想回忆一下这一年去过哪些地方,发现除了几张照片带定位,其他全靠脑子想。试过用运动类 App 记录,但每次出门都要手动开始、手动结束,而且它关心的是配速和心率,我只是想知道"我去过哪儿"。
这个需求看起来简单到不值得单独做一个 App,但市面上真的没有一个干净的方案。于是自己动手写了一个,叫「雁过留痕」,上周刚过审上架 App Store。
做了什么、砍了什么
逻辑很单纯:后台自动记录轨迹,画在地图上,完事。没有社交,没有分享广场,没有跑步模式。打开就是一张地图,你走过的路会慢慢被填满颜色。
开发过程中砍需求砍得最狠的一刀是把「打卡」功能删了。本来做了到达某个地点自动打卡的逻辑,后来觉得一旦有了打卡,就会有排行、有成就系统,整个东西就变味了。我只想让它安安静静帮用户留个痕迹——雁过留痕,仅此而已。
后台定位的耗电治理
耗电是被问最多的问题。iOS 的后台定位确实敏感,我花了不少时间调策略,在精度和功耗之间来回试。最终的方案是根据移动速度动态调整采样频率,静止时几乎不耗电,走动时才密集采点。核心思路大概是这样的:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let location = locations.last else { return }
let speed = max(location.speed, 0)
if speed < 0.5 {
manager.desiredAccuracy = kCLLocationAccuracyHundredMeters
manager.distanceFilter = 100
} else {
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.distanceFilter = 10
}
trackStorage.append(location.coordinate)
}
```
静止状态下把精度降到百米级、触发距离拉到 100 米,移动时再切回高精度。实测一天下来额外耗电大概 3%-5%,我自己觉得可以接受。
## 关于 HarmonyOS 适配的思考
目前「雁过留痕」是 iOS 版本先行,但我一直在关注鸿蒙生态。HarmonyOS NEXT 的定位服务和 ArkUI 的声明式渲染在做这类地图轨迹可视化时其实很合适。如果后续要做鸿蒙版,地图渲染层用 ArkTS 配合 MapComponent 组件应该能比较快地还原现有体验。对于后台持续定位这块,HarmonyOS 的长时任务(ContinuousTask)机制和 iOS 的后台模式思路类似,都需要在功耗和精度之间做权衡。
## 当前状态
现在 App Store 能搜到「雁过留痕」了。定位只有一个——记录你去过的地方,不做运动数据、不做社交分享,就是一张属于你自己的足迹地图。
如果你也在做鸿蒙开发,或者对这类轻量级工具型 App 的架构有想法,欢迎交流。特别是 HarmonyOS 端后台定位的功耗优化,如果有踩过坑的朋友,非常想听听你们的经验。
更多推荐




所有评论(0)