0. 预览

本次要给大家介绍的,是一款非常极客、简洁的第三方 Apple Watch 表盘——TermiWatch。
TermiWatch 模拟了老式终端工具的输出样式,将时间、日期、电量等信息用简洁的符号表达出来。

1. 前言和原理

随着 9 月的临近,watchOS 6 正式发布的时间点也越来越近了,watchOS 6 带来了一系列的大改进,例如独立的 AppStore、噪音检测等,但与此同时,watchOS 依然不出所料的没有提供第三方表盘支持。
这很苹果,但也不是没有解决方案,借助万能的开源社区,我们可以找到很多开源的第三方Apple Watch 「表盘」。这里之所以加上引号,是因为其实现第三方表盘的方式是一种折中、曲线救国式的 Workaround :

概括来说,实现第三方表盘的方式是修改 Apple Watch 的「抬起屏幕时显示最后使用的应用」选项,通过将此选项置为「始终」,即可将我们的自制表盘(本体其实是一个 app)始终置于前台,实现「替代」原生表盘的效果。

2. 工具和原料

硬件:

  • 最低运行 macOS 10.14 Mojave 系统的 Mac 电脑一台;
  • 最低运行 watchOS 5 的 Apple Watch 一块;
  • 配合 Apple Watch 的 iPhone 一部。

目前 Apple Watch 安装应用必须依附于 iPhone,因此 iPhone 才是我们后续操作的主体。

软件:

  • Xcode 10.2.1(可从 Mac AppStore 免费下载);
  • Apple 开发者账号一个 (免费注册,不需要加入 ¥688 的开发者计划)。

3. 下载和打开项目

在软硬件都齐备之后,我们首先需要从 TermiWatch 的官方仓库中,将项目文件下载到本地,总共分 3 步:

  1. 浏览器访问官方仓库:https://github.com/kuglee/TermiWatch
  2. 滚动页面并查看说明文件,点击说明文件中提供的下载链接;
  3. 点击TermiWatch_1.1.1_Carthage.zip,下载压缩好的项目文件。

解压缩下载得到的 Zip 压缩文件后,我们就可以得到一个名为TermiWatch的文件夹:

双击TermiWatch.xcodeproj文件,Xcode 会提示我们这是一个从网络下载的项目,需要确定是否打开,点击「Open」即可。

用 Xcode 打开的项目界面长这样:

  • 最左边的是文件管理器窗口,我们一会会在这里选择我们需要编辑的代码和配置文件。
  • 位于中间的是编辑器区域,具体的选项调整和修改都会在这里进行。

4. 修改项目配置

成功用 Xcode 打开项目之后,我们需要继续完成一些周边的配置工作,相信我,你距离完成已经仅有一步之遥了。

4.1 账号配置

我们需要在 Xcode 中登录之前注册好的开发者账号,这一步是为了接下来可以在真机上运行我们的第三方表盘。

  • 选择 Xcode 工具栏中的「Preference」选项,打开 Xcode 的配置页面。

  • 选中「Account」标签后,点击左下角的「+」按钮,在弹出的菜单中选择「Apple ID」选项,并点击「Continue」。
  • 输入开发者账号的用户名和密码,完成登录。

4.2 项目配置

我们还需要修改一下项目的Bundle IdentifierTeam配置,这同样非常简单,只需要一点点的细心和耐心即可完成。

  • 在文件管理器窗口中,选中最顶部蓝色图标的TermiWatch

  • 选中后,在开启的编辑器区域中我们即可看到我们需要修改的选项:

4.2.1 修改 Team

首先我们来修改Team,如果你在之前正确登录了开发者账号,那么我们就可以在开启的下拉列表中,选择开发者账号中包含的 Team 信息:

4.2.2 修改 Bundle Identifier

接下来,我们需要修改 Bundle Identifier配置,这里需要一些小小的细心:
项目默认的数值为com.kuglee.TermiWatch,我们需要对中间段的kuglee做一些修改,使其变得独一无二,例如加入我的用户名akring,将 Bundle Identifier变成com.kugleeakring.TermiWatch

Bundle Identifier 是项目的唯一标识,我们不可以使用和其他人相同的 Bundle Identifier,因此这里切不可直接照抄我使用的com.kugleeakring.TermiWatch,请大家随意发挥即可。

完成修改后,我们可以看到原先界面中报的错误也已经消失不见了:

但还请保持耐心,我们需要对项目的 3 个 Target 都执行一次上述的修改Bundle IdentifierTeam的操作:

这里需要特别注意,在修改其他 Target 的时候,Bundle Identifier 的前缀必须和之前保持一致,即如果之前将Bundle Identifier修改为com.kugleeakring.TermiWatch,则后续两个 Target 的Bundle Identifier必须为com.kugleeakring.TermiWatch.watchkitappcom.kugleeakring.TermiWatch.watchkitapp.watchkitextension

4.2.3 全局替换

最后,我们还需要使用 Xcode 的文本替换功能,对kuglee做一次全局的替换:

  • 选择 Xcode 菜单 -> Find -> Find and Replace in Project….
  • 点击「 Replace All」按钮即可

5. 见证奇迹的时刻

  • 将你的 iPhone 连接到 Mac;
  • 在 Xcode 设备列表中选中你的 iPhone;
  • 点击运行按钮。

等待片刻后,即可看到你的 iPhone 上安装了一个名为 TermiWatch 的应用:

打开「Watch」应用,找到 TermiWatch 的 Watch app,点击安装即可将其同步到你的 Apple Watch:

打开 Apple Watch 的应用列表,点击打开 TermiWatch:

我们就可以看到期待已久的表盘了:

6. One more thing

前言中提到,第三方表盘是以应用的形式存在的,所以我们还需要修改 Apple Watch 的「抬起屏幕时显示最后使用的应用」选项,将此选项置为「始终」。

7. 后记

Apple Watch 的第三方表盘目前依然停留在一个很「Hack」的层面,整套安装的流程和体验让我想起了很多年前 iOS 繁琐的越狱步骤。然而就目前来看,原生的第三方表盘在 watchOS 6 中已经指望不上了,我们只能寄希望于苹果能在未来几年的软件更新迭代中,为用户带来这一实用功能。