一款记录地点的 App,听起来似乎会很耗电。

这是我们在开发 Tovia 时最早思考的问题之一。

如果一款 App 想记住你去过哪里,最直观的方案似乎很简单:让 GPS 一直运行,全天收集坐标,之后再还原一切。

但这并不适合我们想做的产品。

Tovia 并不想画出你每一秒的移动轨迹。它想回答的是一个更安静的问题:

你真正在哪些地方停留过?

这一区别,改变了位置记录的实现方式。

记录路线和识别到访,是两个不同的问题

想象一个普通的早晨。

你离开家,走到地铁站,穿过城市,买一杯咖啡,然后抵达办公室。

持续运行的 GPS 记录器,可能会在整段路程中不断收集位置点:

8:21:04——这里
8:21:15——这里
8:21:27——这里
8:21:41——这里

如果你在记录跑步、骑行或徒步路线,这很有用。

但对于个人生活时间轴来说,大多数坐标并没有太多意义。

你更可能想记住的是:

家——8:20 离开
咖啡馆——停留 18 分钟
办公室——9:12 到达

Tovia 主要围绕这些到访构建,而不是一条连续的坐标轨迹。

iPhone 本身就知道如何识别到访

Apple 的 Core Location 框架中,有一项专门围绕停留地点设计的服务:Visits(到访)。

Apple 将“到访”位置服务描述为获取位置信息时最节能的方式。它不会持续提供高频位置更新,而是由系统监测用户到访的地点和停留时间,再把到访事件传递给 App。[1]

开发者通过下面的方法启用它:

startMonitoringVisits()

iOS 检测到一次到访后,会提供一个 CLVisit 对象,其中包含:

  • 一个代表性坐标;
  • 位置的水平精度;
  • 大致到达时间;
  • 以及可用时的大致离开时间。

Apple 在 CLVisit 文档中说明了这些属性。[2]

这些信息为 Tovia 提供了构成一次到访所需的原始素材,而不需要 App 整天持续请求精确的标准位置更新。

这为什么会影响电量消耗

不同的位置记录方式,耗电量并不相同。

Apple 明确区分了不同的位置服务。标准位置服务更新更频繁、位置更精确,但耗电也更多。“到访”服务则为关注地点和停留、而非持续移动过程的 App 提供了更节能的方式。[1]

这与 Tovia 的目标非常契合。

我们更关心:

你到了这里。
你停留了一段时间。
你离开了。

而不是:

你的手机又移动了 14 米。

因此,Tovia 不会把你的一天当作一串 GPS 坐标,而是让 iOS 完成识别有意义停留的大部分工作。

最简单的说法是:

Tovia 倾听地点,而不是不断描绘你的移动路线。

一次到访记录是什么样的

假设你在 10:14 到达一家咖啡馆。

某个时刻,iOS 判断你已经在那里停留了一段时间,并向 Tovia 提供到访信息。

简化后的记录可能是:

坐标:咖啡馆附近
到达:大约 10:14
离开:暂时未知

Apple 指出,一次到访起初可能只有到达时间。之后,当用户离开时,系统可以再提供包含离开时间的更新。到达和离开时间都是近似值,并非精确测量。[2]

Tovia 可以把这条系统层面的到访信息,转化成更容易理解的记录:

Blue Bottle Coffee
10:14–11:32
1 小时 18 分钟
喝咖啡

前一部分来自操作系统。

真正的意义来自 Tovia。

一个坐标还不是一个地点

这是一个重要的区别。

Core Location 可以告诉 App,一次到访大致发生在哪里。

但它不会直接告诉 Tovia:

“你就在这家咖啡馆的这个分店。”

到访坐标仍然需要被解释。

Tovia 可以利用地图和兴趣点信息,将坐标与现实中的地点对应起来。由于位置测量总存在误差,结果偶尔也可能不准确。

手机可能认为你离楼下餐厅更近,而不是楼上的办公室。

一座大型商场里可能有几十个候选地点。

GPS 位置也可能漂移到隔壁建筑。

因此,Tovia 把系统坐标视为一项观察结果,而不是不容质疑的答案。

随着时间推移,还会出现更有用的信息。

你的历史,可能比一次新的地图搜索更了解你

Tovia 第一次看到某处到访时,可能需要判断:

这个坐标附近,哪个地点最能解释这次到访?

但如果你已经去过同一间办公室二十次,问题就不同了。

Tovia 已经知道,地图上的这个区域对你有意义。

反复到访可以逐渐形成一层属于你的地点历史:

这一组到访通常是“办公室”
这一组通常是“家”
这一组是你经常去的健身房

因此,地点记录工具会随着时间变得更贴近个人。

世界地图告诉 Tovia 哪些地点存在。

你的历史告诉 Tovia,哪些地点对你重要。

Tovia 不需要一直显示在屏幕上

“到访”监测被设计为可以在 App 不处于前台时继续工作。

Apple 表示,在具备适当位置权限时,“到访”服务可以在 App 没有主动打开时传递事件。Apple 还说明,当到访监测开启时,如果新的到访事件已经准备好,系统可以重新启动已终止的 App。[1]

这很重要,因为如果每天早上都要记得打开,一个记录生活的 App 会变得很麻烦。

自动记录的意义,恰恰是你不需要一直想着它。

你照常生活。

记录安静地形成。

为什么不干脆记录一切?

因为更多数据,并不自动等于更好的记忆。

一条连续的 GPS 轨迹,一天就可能包含成千上万个坐标。

但五年后,你真正想看到的会是什么?

大概不会是:

纬度 34.05231
经度 -118.24372
上午 10:42:17

更可能是:

那家我们以前下班后常去的小餐厅。

或者:

那个夏天,我几乎每个星期日都会去的公园。

又或者:

换工作前,我在那里度过了 600 个小时的办公室。

Tovia 的目的,不是保存你走过的每一米。

而是保存生活通过地点展开的结构。

隐私也会影响产品架构

我们选择这种方式,还有另一个原因。

位置历史非常私密。

Tovia 的核心到访历史、地点、事件、笔记和 HealthKit 相关记录,都设计为保存在设备本地,而不是上传到 Visionular 的服务器。你可以在 Tovia 隐私政策中了解更多。

因此,自动位置记录不需要变成一份储存在云端的行踪档案。

手机检测到到访。

Tovia 把它变成个人记录。

记录留在你手中。

低功耗记录应该让人感觉不到它的存在

理想的 Tovia,不是一款需要你不断操作的 App。

它是一款你偶尔回来查看的 App。

一周后打开它,看看这些天去了哪里。

打开一家餐厅,发现自己已经来过十一次。

回看去年夏天,找到那座悄悄成为日常一部分的公园。

结束一趟旅行后,发现地点、时间和记忆已经形成了一条时间轴。

技术的重要性,在于它能实现这一切,同时不把日常生活变成手动记录的任务。

Apple 围绕“有意义的到访”而不是持续更新,设计了这项位置服务。

Tovia 延续了同样的想法:

记住真正重要的地点,不必记录沿途的每一步。

资料来源

  1. Apple 开发者文档:获取设备的当前位置
  2. Apple 开发者文档:CLVisit
  3. Apple 开发者文档:startMonitoringVisits()