问题的起点

去年年底翻相册,想回忆一下这一年去过哪些地方,发现除了几张照片带定位,其他全靠脑子想。试过用运动类 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 端后台定位的功耗优化,如果有踩过坑的朋友,非常想听听你们的经验。
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐