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