新功能:照片探索器 · 查找任何已添加到地图的旅行照片。

产品更新。

独立日:旅行成就和 Mapsake 朋友

祝所有在美国庆祝的人们独立日快乐。 此版本通过可解释的成就和有意的朋友之间的共享,使私人地图集更具趣味性。

由...设计。 10 分钟阅读
Mapsake 成就,显示可搜索的旅行里程碑和奖牌进度

独立日快乐

祝所有在美国庆祝的人们独立日快乐!

此更新是关于私人旅行地图变得更加生动的方式:成就为所有者提供新的模式,以便在自己的历史记录中发现,而 Mapsake Friends 允许与他们真正了解的人比较这种历史记录。

这些功能都不会更改核心规则。 Mapsake 首先是一个个人地图。 没有公开的关注者计数、全球排行榜或旨在让陌生人互相展示的动态。

再次查看地图上 160 周围的理由。

Mapsake 现在包含约 160 个成就。其中一些是熟悉的里程碑:第一个标记的位置、五个国家、每个大陆或不断增长的城市和机场列表。其他成就描述了地理区域、文化、自然、科学、航空以及隐藏在旅行历史中的不太明显的模式。

目录故意范围广泛。即使是那些通过附近地区旅行的人,也应该能够取得有意义的进展;该系统不只为那些试图收集所有国家的人。

在界面下方,成就评估是一个对整个地图的确定性扫描。每个成就定义了它关心的位置或阈值,Mapsake将该定义与当前的“已访问”和“居住地”记录进行比较,结果包括进度、解锁状态、日期和奖牌等级。它不依赖于分析服务或远程规则引擎。

这种方法有一个有用的结果:成就可以在离线状态下工作,并在导入或手动更改后立即更新。这也有助于进行测试。相同的配置始终可以生成相同的解锁集。

目录从 11 增长到大约 160。

第一个成就引擎具有 11 个简单的里程碑。 这足以证明循环:从地图中推断进度,突出显示已解锁的内容,并显示剩余进度的进度条。 但是,它太小,无法让任何有既定旅行历史的人感兴趣。

第二个版本引入了家庭和地理组。国家/地区计数里程碑变成了一个堆栈,而不是几乎相同的卡片墙。大陆完成以及诸如欧盟、申根区、东盟、G7、马格里布和斯坦等组添加了目标,这些目标是关于旅行的形状,而不仅仅是其数量。

之后,目录扩展到艺术、音乐、科学、技术、自然、地质学和经济学。这就是它开始具有 Mapsake 的独特之处。一个爵士乐历史小组和一个航天项目小组可以在地理上重叠,同时讲述关于为什么这些地方应该在一起的完全不同的故事。

挑战在于避免任意的琐事。每个组都需要一个可防御的、固定的成员列表,以及一个在新鲜感消退后仍然有意义的解释。成员信息存储在源代码中,而不是来自不断变化的 Web 服务,因此,目录更新就像任何其他产品行为一样,会经过审查和版本控制。

160 周围有足够的信息,使其成为搜索和组织所必需的。 这不是一个需要永远增长的目标。 拥有一个较小、连贯的目录比成千上万个无人理解的程序化徽章更好。

解锁日期和家庭更改了界面。

当目录中的项目数量达到大约 80 个时,普通的网格显示停止工作。 来自同一系列的多个阈值会挤压掉其他所有内容,并且长期用户无法区分哪个是新的。

Mapsake 现在会将获得的成就整理成一个堆栈,其中最高级别位于顶部。展开后,您可以查看之前的里程碑。已锁定的成就仍然可见,作为目标,但默认排序方式是显示最接近完成的项目。

解锁日期记录在成就首次变为真时。它们在后续评估中幸存下来,并在朋友快照中旅行,这使得朋友的成就页面可以显示何时发生某事,而不会暴露私有事件日志。现有用户在首次运行时进行基准设置,因此安装更新不会为他们旧地图上已经满足的每个里程碑显示彩带。

这种基本行为源于将迁移视为功能的一部分。一个在启动时宣布 70“新”成就的技术正确引擎,即使每个徽章在数学上都应得,也会让人感觉不正常。

进度应该易于理解。

一堵锁着的图标墙不太有用,因此“成就”选项卡围绕着解释进行组织。

  • 按名称搜索并按类别或大陆进行过滤。
  • 按最近解锁、已完成或最接近的顺序排序。
  • 打开一个成就,以查看其描述、相关地点、地图和当前进度。
  • 浏览青铜、银、金和铂金等级,以了解家庭如何支持这些等级。
  • 长按成就以创建共享卡,而无需自动发布。

解锁庆祝活动是短暂而有触感的,完整的详细信息随后可用。语气是故意轻松幽默。它应该感觉像是发现地图上的某些东西,而不是接受绩效评估。

详细屏幕也解决了信任问题。 诸如“五眼联盟”或“环太平洋”之类的标题对每个人来说可能不是显而易见的。 打开它会显示完整的描述、地图区域、组中的国家/地区、哪些国家/地区被视为已访问以及可用时访问日期范围。 对于分层系列,青铜到白金级别传达了进度,而无需使用四个不相关的视觉系统。

地图有意突出显示尚未访问的成员,以及已访问的成员。当一个人能够看到目标只是相邻的国家/地区时,更容易理解进度,而不是简单地阅读“8 中的 9”。

庆祝活动不能包含导航。

在测试过程中,一个实现细节变得可见:最初,成就的庆祝活动类似于模态摘要。卡片看起来可以点击,但庆祝层没有足够的导航状态来可靠地打开底层详细信息。

该修复是将每个奖项视为主目录中使用的相同成就标识,并将其路由到现有的详细屏幕。 庆祝活动仍然是临时的演示; 成就模型仍然是持久的信息源。 这是一个更广泛的 Mapsake 规则的一个小例子:特殊效果应该位于产品之上,而不是将其分支。

与朋友共享,无需构建社交网络。

Mapsake Friends 从邀请开始,而不是可搜索的目录。链接包含一个私有共享代码,而不是姓名或帐户。打开它会建立一种相互连接:每个人都可以看到对方的共享地图,都在 Mapsake 内部。

链接在远距离上效果良好,而二维码和附近发现适用于两个人位于同一房间的情况。该应用会发布一个紧凑的旅行快照,用于连接,而不是尝试同步两个完整的本地数据库。

第一次共享模型不够可靠。

以前,每个关系都使用单独的 CloudKit 共享。这看起来很有吸引力,因为 CloudKit 处理访问邀请,但这使得友谊变得困难。一个人可以接受共享,而原始发送者无法获得可靠的返回路径,并且系统共享 URL 很难转换为应用程序中的可预测流程。

新的替换模型为每个配置文件提供一个稳定的共享地图记录,该记录由不透明的代码寻址。 邀请链接打开朋友的记录,缓存快照,发布接收者的自己的地图,并向原始代码发送一个小请求。 前景和后台刷新完成相互连接。

该替代功能的第一个版本直接在链接中使用稳定的代码。 它可以工作,但如果链接逃脱了预期的对话,它可以被永久重用。 现在,一次性邀请令牌位于稳定的地图标识符之前。 消耗的令牌不能再次使用,而底层友谊可以继续刷新。

这是一个产品和基础设施同时变化的一个例子。“分享我的地图”是一个界面上的按钮,但其下是通用链接路由、CloudKit 记录查找、相互请求处理、本地缓存、去重以及清晰的成功或失败消息。隐藏这种机制是任务;假装它不存在会使故障难以解释。

您的朋友的个人资料包含丰富的详细信息。它可以包括交互式地图、带有镜头、区域和年份控制的护照、成就以及比较视图,显示重叠部分以及每个人的独特地点。除非其所有者明确选择共享,否则主页位置将被排除。

最初,朋友界面使用了更简单的地球仪和摘要。但这很快感觉更像是一个预览,而不是一种关系。当前的界面使用与所有者地图相同的地图设置、相同的护照计算,以及相同的成就详细信息模型,但数据来源不同。

重用这些组件揭示了一种有用的抽象:地图和护照屏幕应使用旅行数据,而不能假设这些数据属于已登录的本地配置文件。在实现朋友快照功能后,镜头过滤、年份范围、大陆范围、成就进度和比较可以共享行为,而无需向朋友提供访问所有者底层数据库的权限。

在开发过程中,还存在一个不太引人注目的导航错误。 “朋友”行直接绑定到 SwiftData 模型对象,但 CloudKit 镜像可能会重置该对象并更改其身份,就在导航开始时。 使用朋友的稳定 ID 进行导航解决了看似无效的点击问题。 分布式数据错误通常表现为普通的界面错误。

个人资料照片遵循相同的快照规则。 可以在共享的个人资料旁边发布一个小头像,并在编辑后刷新。 如果未设置照片,则首字母将作为备用方案。 Mapsake 在首次邀请之前会提示提供可识别的姓名和照片,但两者都不是必需的。

由有意义的更改组成的动态内容。

朋友标签不是上传帖子的流。Mapsake 会定期将最新的朋友快照与设备上已缓存的版本进行比较。如果您的朋友添加了地点或解锁了成就,这些差异将成为一个小的本地活动动态。

此快照差异方法使功能保持简单。 朋友不必每次他们的地图发生更改时都发布新帖子,Mapsake 也不需要内容排名系统。 提要会记录一个有用的事件,因为底层旅行历史记录已更改。

它还避免为每个 feed 事件添加另一个 CloudKit 记录类型。该应用程序已经具有旧的和新的快照。比较它们的地点标识符和成就解锁可以本地推断有趣的更改,然后将受限的 feed 保存在设备上的小型 JSON 存储中。

地点添加和成就解锁被分组到单独的块中,即使它们在一个刷新中到达。 这可以防止从大型导入中产生数十个几乎相同的行,并使该 feed 看起来像是“Emma 添加了日本、京都和另外两个地方”,而不是数据库事务日志。

可以为每个旅行镜头启用通知,并设置冷却时间,以防止大量导入历史记录导致大量警报。当有人想有意检查时,仍然可以使用刷新功能。

隐私是功能的一部分,而不是免责声明。

旅行历史可以揭示家园、日常习惯和未来计划。因此,朋友功能必须比传统的社交功能更明确:

  • 添加他人需要邀请、扫描二维码或近距离交换。
  • 共享负载包含朋友体验所需的地图数据,而不是照片库的副本。
  • 家庭共享是一个独立的选项,默认情况下已禁用。
  • 删除朋友会删除本地关系及其缓存的活动。
  • 即使不使用 Mapsake 帐户,Mapsake 的基本功能仍然可用。

朋友快照永远不包含原始照片字节。它包含旅行标记、个人资料字段、镜头信息、用于范围统计的日期,以及朋友可以访问的界面所需的成就解锁信息。这种限制可以防止丰富的体验意外地变成照片分享服务。

Mapsake 还区分了朋友共享和公共浏览器链接。朋友连接是相互的,并且存在于应用程序内部。公共地图是一个单独的、可选的工件,用于希望获得只读链接的人。

成就和朋友让地图更有趣,但它们不会将其变成公共个人资料。这个界限非常重要,并且随着应用程序的增长,需要不断强调。

执行更新。

打开。 成就 为了搜索整个目录并查看最接近的内容。然后打开 朋友, 使用 分享邀请链接或使用附近的二维码选项,并与您认识的人比较地图。

最佳结果不是更高的分数。而是进行交流:双方都喜欢的地点,某人从未考虑过的地区,或者双方都不知道自己即将完成的奇怪成就。

Mapsake 应用程序图标

Mapsake 的独立开发者,讲述了该应用程序背后的产品、地图、隐私和 Apple 平台工作。

创建您自己的旅行地图。

从您已经拥有的旅行历史开始。

Mapsake 免费,使用核心功能无需 Mapsake 帐户,并且支持的照片匹配功能都在您的设备上运行。

免费获取 Mapsake。