记录轨迹这个需求,我用 ArkTS 的思路在 iOS 上先验证了一版

HarmonyOS走进高校:从课程到生态,看分布式操作系统的人才培养新路径 分布式操作系统是构建万物互联时代的技术基石,其核心原理在于通过网络将多台设备的软硬件资源整合为统一的虚拟系统,实现数据与服务的无缝流转。这一技术价值在于突破了单设备算力与功能的局限,为复杂业务场景提供了弹性、可靠的解决方案,广泛应用于智能家居、智慧出行、协同办公等领域。随着物联网与全场景智能的深入发展,掌握分布式系统开发能力成为工程师的关键竞争力。在此背景下,HarmonyOS作为面向全场景的分布式操作系统,其独特的原子化服务与分布式软总线架构,正通过高校课程体系改革与产学合作项目,系统化地培养未来产业所需 阅读详情

一个简单需求的起因

去年跑了十几个城市出差,每次回来都想整理一下足迹。打开各种旅行 App,要么让我发游记,要么让我打卡景点,要么弹一堆社交推荐。我的需求其实特别朴素:我去过哪,走过哪条路。就这么简单,愣是找不到一个干净的工具。

后来我做了「雁过留痕」这个 App,目前已经在 iOS App Store 上架,自己用了三个多月,也在持续关注 HarmonyOS 生态的适配可能性。今天聊聊这个产品的设计思路和一些技术选型上的思考。

核心功能:只做轨迹留痕,不做运动分析

一句话概括:自动把你的移动轨迹画在地图上,仅此而已。

打开 App 授权定位权限后,后台持续记录位置变化。不需要手动"开始记录",不需要打卡签到,不需要拍照上传。出门、走路、坐地铁、开车——所有移动都会安静地变成地图上的一条线。日积月累,你去过的街区会被逐渐"点亮",空白区域就是还没踏足的地方。

这里有一个很关键的产品决策:不做配速、不做心率、不做卡路里。它和运动 App(比如 Nike Run Club 或 Apple 健身)的区别在于完全去掉了"表现焦虑"。不区分你是在锻炼还是只是下楼买杯咖啡,所有移动一视同仁,只留痕迹。

技术实现上的几个点

iOS 版本的后台定位采用了 CLLocationManager 的 startMonitoringSignificantLocationChanges 配合 allowsBackgroundLocationUpdates,在精度和功耗之间做平衡。实测一天额外消耗 5%-8% 左右的电量,iPhone 15 系列可以接受,老机型会更明显一些。

轨迹渲染这块比较有意思,我用了像素风格的地图渲染方案,而不是常见的导航地图样式。核心思路是把经纬度坐标映射到像素网格:

func bindPixel(coordinate: CLLocationCoordinate2D, zoomLevel: Int) -> PixelPoint {
    let scale = pow(2.0, Double(zoomLevel))
        let x = Int((coordinate.longitude + 180.0) / 360.0 * scale)
            let y = Int((1.0 - log(tan(coordinate.latitude * .pi / 180.0) + 1.0 / cos(coordinate.latitude * .pi / 180.0)) / .pi) / 2.0 * scale)
                return PixelPoint(x: x, y: y)
                }
                ```
这样出来的视觉效果很有"在城市里画画"的感觉。我有次周末 Citywalk 走了一个环形路线,回来一看轨迹图居然在地图上画出了一个近似圆形,截图发朋友还挺有话题性。

## 关于 HarmonyOS 适配的思考

我一直在关注 HarmonyOS NEXT 的发展。如果后续做鸿蒙版本,后台定位这块可以用 `@ohos.geoLocationManager` 模块,ArkTS 的声明式 UI 写地图渲染层其实很适合这种像素网格的场景。比如用 ArkUI 的 Canvas 组件做轨迹绘制,大致思路类似:

```arkts
@Component
struct TrackCanvas {
  @State pixels: Array<PixelPoint> = []
    
      build() {
          Canvas(this.bindbindbindctx)
                .onReady(() => {
                        this.bindctx bindbindbindbindbindbindof bindOfbindOf bindOf bindOf.bindbindBindBindbindPixels bindOf bindOf.bindforEach bindOf(bindpixel bindOf bindOf bindIn bindOf bindOf.pixels bindOf) bindOf {
                        bindOf bindOf bindOf          bindOf.bindctx bindOf.bindfilbindRectbind(pixel.x bindOf, bindOf pixel.y bindOf, 4bindOf, 4)
                        bindOf bindOf}
                              })
                                }
                                }
                                ```
算了,上面这段伪代码写得不太严谨,等我真正开始适配鸿蒙版本时再整理完整的实现分享出来。核心逻辑其实就是拿到持续定位的坐标流,做 Mercator 投影转换后往像素画布上填色块。

## 数据隐私的设计原则

轨迹数据属于高度敏感的个人信息。这个产品在隐私上的设计很坚决:数据存在本地,不上传云端,没有社交功能,没有"分享到朋友圈"的引导。纯粹的个人工具。

对比很多旅行平台虽然也有足迹地图功能,但你的数据本质上是平台的资产,而且总有各种社交钩子想让你公开分享。如果你只想给自己留个记录、不想让别人知道你去了哪,这种纯本地的架构会让人舒服很多。

## 目前的不足和后续计划

目前没有导出功能,如果你想把轨迹数据备份或导入到其他工具里暂时做不到。GPX 导出是后续版本计划中优先级比较高的一项。

另外 HarmonyOS 版本还在规划阶段,如果鸿蒙生态的开发者有类似需求或者对后台定位的功耗优化有经验,很期待交流。

## 获取方式

iOS App Store 搜索「雁过留痕」即可下载。

如果你也在做鸿蒙开发,或者对轨迹记录、地图可视化这个方向感兴趣,欢迎评论区交流。我后续也会把 HarmonyOS NEXT 适配过程中踩的坑整理成文章发出来。
讯飞X2本地大模型升级:办公本的AI能力边界如何突破 大模型终端化是当前AI落地的核心趋势,其本质是在算力、内存与功耗约束下,实现任务闭环最短的轻量化推理。本地化大模型并非简单压缩参数,而是通过模型蒸馏、动态内存切片、量化感知训练等关键技术,在边缘设备上构建可信赖的实时语义理解能力。这种能力带来显著的技术价值:摆脱网络依赖、保障数据主权、提升操作确定性。典型应用场景包括无网环境下的语音转写、手写笔记的语义活化、PDF文档的上下文问答等。讯飞智能办公本X2正是这一路径的代表性实践,依托星火大模型能力重构,将AI深度嵌入录音、手写、阅读等原生办公流。 阅读详情

相关推荐

SAP成本中心费用分割(KSS2)实战:从原理到月末调整全解析

本文详细解析了SAP成本中心费用分割(KSS2)的核心逻辑与实战操作,从成本要素分组配置到月末调整全流程。通过KSS2将初级成本要素按作业类型重新分类为次级成本要素,确保成本结算准确。文章还提供了常见错误处理方法和典型业务场景实战,帮助用户高效完成SAP成本结算。

weixin_29279101的博客 1254

鸿蒙Flutter应用数据加密实战:AES/RSA与HUKS深度集成

数据加密是保障应用安全的核心技术,其原理在于通过特定算法将明文信息转换为不可读的密文,防止未授权访问。在移动应用开发中,对称加密算法AES因其高效性常用于本地数据加密,而非对称加密算法RSA则多用于密钥交换与数字签名,两者结合可构建混合加密体系,兼顾效率与安全。对于鸿蒙(HarmonyOS)应用而言,其内置的硬件级安全能力,如HUKS(HarmonyOS Universal KeyStore)密钥库,为密钥的安全生成与存储提供了系统级保障,是实现金融级安全合规的关键。本文聚焦于如何在Flutter for

weixin_33935636的博客 244

汇川伺服Modbus-RTU通讯实战:从帧结构解析到西门子PLC配置

本文详细解析了汇川伺服与西门子PLC通过Modbus-RTU协议进行通讯的实战步骤,包括帧结构解析、硬件连接、参数设置及PLC程序配置。通过具体案例和常见问题排查指南,帮助工程师快速掌握工业自动化中的通讯技术,提升设备调试效率。

weixin_33670713的博客 453

腰鼓制作基于HarmonyOS ArkTS API 24在 ArkTS 中,TextInput 组件的 onChange 回调返回的值类型是字符串,将数值字段以字符串形式存储在状态中

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。本文以一个名为"智能账单"的三标签页记账应用为切入点,逐层拆解其数据模型设计、@Builder 组件复用策略、@State 状态管理机制、条件渲染导航模式,以及静态写死渲染与动态循环渲染之间的性能权衡,为

jin421352的博客 196

Spyglass功耗分析:从RTL到优化的全流程实践

本文详细介绍了在RTL设计阶段使用Spyglass进行早期功耗分析的全流程实践。通过一个真实项目案例,阐述了早期功耗分析的必要性,并手把手指导了从文件准备、GUI操作到报告解读与优化的完整步骤。文章重点说明了如何利用Spyglass实现功耗分析的“左移”,在编码阶段识别和修复功耗热点,从而避免后期高昂的修改成本,是低功耗芯片设计的关键技能。

purple的博客 1115

【DMA】认识 DMA 及其工作流程(与传统CPU存取方式的区别)

【DMA】认识 DMA 及其工作流程(与传统CPU存取方式的区别)

challenglistic的博客 5万+

基于HarmonyOS ArkTS API 24通过new PhotoItem(p)创建一个新的对象并替换数组中的原对象

在任何一个设计精良的应用中,色彩系统都是视觉一致性的基石。bg: string;这段代码定义了一个名为的接口,它包含了11个色彩字段,每个字段都对应应用界面中的一个特定功能角色。primary:主色调,通常用于页面头部、重要按钮等视觉重心区域。在本应用中,主色调选用了深棕色#3E2C23,既呼应了胶片暗房的氛围,又能提供足够的视觉对比度。brown:辅助棕色,用于次级强调元素,如标签背景、评分星星等,与主色调形成层次关系。bg:页面背景色,选用奶油色#F3EBDD。

2501_92985290的博客 950

emqx Java 订阅以及发送 结合若依框架

emqx Java 订阅以及发送 结合若依框架

Spo的博客 1613

基于 HarmonyOS ArkTS API 24|lineHeight 文本行高精细调节,多行消息卡片文本间距优化阅读体验

引言在移动互联网内容生态持续演进的今天,垂直领域的社区类应用正在成为用户体验创新的重要阵地。HarmonyOS 6.1.1 作为华为全场景智慧生活操作系统的最新里程碑版本,携 HarmonyOS ArkTS API 24 为开发者带来了更加强大的声明式UI编程能力。本文将以一个完整的美甲款式社区应用——"美甲星球 NailStar"为案例,深入剖析基于HarmonyOS API 24 的单文件应用架构设计,从类型系统、数据建模、状态管理到视图构建的全链路技术细节进行逐行级深度解读。该应用融合了小红书风格的内

2401_89578244的博客 182

【ArcGIS风暴】Win10操作系统ArcGIS许可License无法启动的解决方法汇总(绝对成功!)

文章目录1. 关闭Windows Defender2. 关闭系统防火墙3. 删除迈克菲(McAfee)杀毒软件4. 在系统服务中启动 在安装ArcGIS软件时,最重要的一步是许可服务的正常启动,通常,由于各种各样的原因,ArcGIS许可管理器License Manager十有八九会无法启动,点N多次都没反应,如果许可服务不能如愿启动的话,即使Desktop安装成功,也是无法打开的。本文汇总了Win10操作系统之上ArcGIS安装过程中可能会导致服务无法启动的原因及解决办法。 ArcGIS安装参考教程:

智慧空间实验室 2万+

图像拼接(Image Stitching)

图像拼接(Image Stitching):是一项计算机视觉技术,它将多张重叠的图像合并为一张更大、无缝的全景图或广角视图。该技术广泛应用于全景摄影、地图制作、医学影像处理、计算机视觉及增强现实(AR)等领域。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 2503

HarmonyOS ArkTS API 24智慧停车管理应用:plate和spot字段可以通过外键关联到 VehicleMeta 和 ParkingSpotMeta 表,但在此接口中它们被直接内联

在移动互联网与智能穿戴设备高度普及的今天,"习惯养成"已经从一个模糊的自我管理理念,演变为一个可量化、可追踪、可视化的数字化产品赛道。越来越多的人希望借助手中的智能终端,把"早起、冥想、阅读、运动"这些抽象的自律行为,转化为一条条清晰的数据曲线和一张张可触摸的打卡卡片。而鸿蒙生态(HarmonyOS)凭借其跨设备协同、分布式软总线以及声明式 UI 开发框架 ArkUI,为这类注重"轻量化交互 + 即时反馈"的生活方式类应用提供了极为理想的生长土壤。本应用正是一款面向"晨间场景"深度打磨的习惯追踪工具。它聚焦

2401_86031952的博客 104

华为OD机考双机位C卷 - 手机App防沉迷系统(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 手机App防沉迷系统(OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 2061

基于HarmonyOS API 24拦截机制类似 Vue 3 中 reactive() 函数或 MobX 中的 @observable 装饰器,ArkTS 采用了更贴近原生的高性能 Proxy 方案

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。

2401_86031952的博客 87

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

飞盘高尔夫记录与管理基于HarmonyOS API 24实战解筛选器通过 difficultyChip 构建方法渲染为横向滚动的标签组,每个标签的激活状态由 selectedDifficulty 控制

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。

2401_86031952的博客 46

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

风筝制作基于HarmonyOS ArkTS API 24全栈解析,TAB_LIST 常量是一个包含六个 TabMeta 对象的数组,按照风筝制作的工艺流程顺序排列

健身管理类应用与之前分析的外卖、招聘等应用有本质差异——它的核心数据不是"交易"或"任务",而是"时间序列的身体状态数据":每次训练有时长、卡路里、组数、重量;每次饮食有热量、蛋白质、碳水、脂肪;每周有运动时长趋势图。这些数据的共同特征是"随时间积累,用户需要横向对比和趋势分析"。这导致健身App的数据层设计必须从第一天就考虑"历史数据查询"和"多维度聚合"的需求,而非仅关注当前单条记录的增删改查。健身应用的用户行为模式也有独特之处:用户使用健身App的目标是"坚持",而不是"一次性完成任务"。这意味着激励

jin421352的博客 181

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

HarmonyOS 6 ArkUI - 数据模型设计:interface + @Observed class implements 双层模式

引言在当今移动应用开发的浪潮中,鸿蒙生态正以惊人的速度崛起,HarmonyOS 6.1.1 作为华为自主研发的分布式操作系统的最新迭代版本,不仅在底层内核调度、分布式软总线能力上实现了质的飞跃,更在应用开发框架层面为开发者提供了前所未有的声明式UI编程范式。HarmonyOS ArkTS API 24 作为当前鸿蒙应用开发的核心语言接口版本,承载着 ArkUI 声明式框架的全部能力,包括状态管理、组件化构建、动画系统以及丰富的内置组件库。本博文将以一个完整的钓鱼爱好者社区应用为蓝本,深入剖析如何运用 Ark

2501_92985290的博客 303

活字印刷与雕版工坊多个数据模型类(如 PostItem、TypeItem、BlockItem、BookItem)均使用了 @Observed 装饰,使得当用户执行新增动态、编辑课程、下架雕版等操作

健身管理类应用与之前分析的外卖、招聘等应用有本质差异——它的核心数据不是"交易"或"任务",而是"时间序列的身体状态数据":每次训练有时长、卡路里、组数、重量;每次饮食有热量、蛋白质、碳水、脂肪;每周有运动时长趋势图。这些数据的共同特征是"随时间积累,用户需要横向对比和趋势分析"。这导致健身App的数据层设计必须从第一天就考虑"历史数据查询"和"多维度聚合"的需求,而非仅关注当前单条记录的增删改查。健身应用的用户行为模式也有独特之处:用户使用健身App的目标是"坚持",而不是"一次性完成任务"。这意味着激励

jin421352的博客 196

iOS 多语言本地化教程,VS Code KXApp 编辑 String Catalog .xcstrings

做 iOS 多语言本地化总要在 VS Code 和 Xcode 之间来回切?这篇讲用 KXApp(快蝎)在 VS Code 里直接编辑 String Catalog(.xcstrings):双击打开和 Xcode 一样的表格,`.xcstrings` 与老的 `.strings`、`.stringsdict` 同表编辑,加语言同步登记到工程、从源码扫描同步新 key,复数、设备变体和变量占位都在表里处理,改源语言文本后已有翻译自动标需复核。文件仍是标准格式,回 Xcode 打开一致。

2501_91592143的博客 154

4G 功能机操作系统选型指南:KaiOS、Mocor、MAUI、PMAOS 的能力边界与验证方法

4G 功能机如何选择操作系统?本文梳理 KaiOS、Mocor、MAUI、PMAOS 四条路线的技术定位与能力边界,从市场认证、应用清单、芯片与 BSP、内存与整机成本、交付维护五个维度建立选型流程,并提供场景决策矩阵和签约前八项验证清单,帮助研发与产品团队区分平台宣称、演示能力与目标机型的实际交付能力。

PMAOS的博客 183

iOS 小组件开发,Windows 上用 KXBuild 加 WidgetKit 扩展 给 App 加 iOS 桌面小组件

iOS 小组件开发用 WidgetKit。这篇在 Windows 上用 KXBuild 的 add-target --type widget 给 SwiftUI 工程加一个桌面小组件扩展:写时间线和主屏小号/中号、锁屏圆形多种尺寸界面,用 App Group 和 App 共享数据,App 里调 WidgetCenter 主动刷新,按 F5 装到 iOS 17+ 的 iPhone 调试,再随 ipa 一起上架。以喝水打卡为例,附 App ID、描述文件准备和小组件不刷新、签名报错的排查。

2501_91600747的博客 183

React Native项目开发(iOS侧为例)

本文基于React Native 0.71+,通过npx react-native init初始化项目后,详细讲解如何使用TypeScript搭建两个页面:入口页(Entrance.tsx)和我的页面(Profile.tsx)。重点介绍了配置tsconfig.json、初始化TypeScript环境、集成React Navigation实现页面跳转,并通过创建共享类型文件(navigation.ts)实现路由类型安全。文章还涵盖依赖安装、iOS构建问题排查、目录结构规范及常见错误解决方案。

D_xw_的博客 232

安卓IOS打包证书

.p12 、 .mobileprovision 、 keystore 相关证书申请

weixin_58431406的博客 275

[iOS]Runtime2

为了让你在父类中依然能访问当前对象(也就是子类的实例),编译器在底层会生成一个结构体,叫 : 当调用 时,底层调用的函数是 : 拿着(也就是当前的子类对象)作为消息接收者,但是把方法查找的起点定位在了 (父类)这里需要注意的就是仍然是调用者自己,即先讲一下上篇没讲过的,我们如果缓存未命中,那我们就会进入慢速查找,现在我们来详细的讲解在进入慢速查找的瞬间会再看一遍方法列表,然后立刻调用加锁,因为多线程下别人正在动态添加方法或者扩容,不加锁会崩溃类就绪OC的机制就是在编译期只生成了 结构,当类首次被发送消息时(

wzm20070304的博客 218

iOS 推送通知怎么实现,从 APNs p8 密钥到 iOS 真机收到第一条推送

iOS 推送通知要跑通,核心是 App ID 开通 Push Notifications 并重新生成描述文件、签名带上 aps-environment、再用 APNs 的 .p8 密钥签 JWT 把推送发到设备令牌。这篇用 KXBuild 按五步做:开能力、加 entitlements、代码里请求权限拿设备令牌、建 .p8 认证密钥、用一段 Node 脚本或 curl 走 HTTP/2 发测试推送,让 iPhone 弹出第一条通知。附拿不到令牌、APNs 报错码、TestFlight 收不到的排查。

2501_91591841的博客 222

iOS App 图标、启动屏和多语言搭配 方法,上架前使用KXBuild一次做好 App 图标

上架前,iOS 的 App 图标、启动屏和多语言这三样配不齐,上传时就可能被拦或显示不对。这篇用 KXBuild 一次配好:图标只要一张 1024×1024、不带透明通道的 PNG,在资源目录编辑器里右键就生成全部尺寸,还支持 iOS 18 深色/着色和 Xcode 26 的 .icon;启动屏在 Info.plist 的 UILaunchScreen 填背景色和 Logo;界面文字、App 名称用 .xcstrings 翻译,商店信息再到 App Store Connect 按语言填。附上架前检查清单。

2501_91600889的博客 276
上一篇: 我用 Screen Time API 做了个鸿蒙/iOS App,算出每笔订阅的单次使用成本
下一篇: 独立开发实战:用 ArkUI 做了一个鸿蒙原生的慢性病记录 App「健康手账」
SameX-4869
博客等级 码龄17年 3354粉丝 657原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值