在介绍了 WaterMinder 的联动后,今天我们将介绍如何通过 Protocol Launcher 与 Tally 联动,让计数、记分和习惯追踪变得更加自动化。
作为开发者或效率工具爱好者,你可能经常遇到这些场景:
- 在效率看板中提供一个"增加计数"的按钮,快速记录某个习惯的完成情况。
- 在游戏记分场景中,通过网页按钮直接更新 Tally 中的分数。
- 在自动化工具中集成 Tally,实现定时重置或获取计数值。
现在,通过 Protocol Launcher,你可以以类型安全的方式生成 Tally 深度链接,实现计数器的自动化管理。
Tally 与深度链接
Tally 是一款适用于 iPhone、iPad 和 Apple Watch 的快速计数、记分和习惯追踪应用。它提供了强大的深度链接支持,允许从网页或第三方应用直接触发增加、减少、重置和获取计数值等操作。
然而,手动拼接这些链接需要处理参数编码和计数集(Tally Set)的关联逻辑,且缺乏类型提示,极易出错。
核心能力:自动化计数与精准控制
Protocol Launcher 为 Tally 专门提供了 protocol-launcher/tally 模块,支持以下核心功能:
- 打开 Tally 应用:快速唤起 Tally 应用。
- 增加计数:为指定计数器增加值。
- 减少计数:为指定计数器减少值。
- 重置计数:将计数器重置为初始值。
- 获取计数值:获取当前计数值并通过回调 URL 返回。
快速上手
首先,确保你的项目中已安装:
bash
npm install protocol-launcher
在代码中你可以根据场景选择两种导入方式:
- 按需加载(通过子路径导入),支持 Tree Shaking,体积更小;
- 全量导入(从根包导入),写法更简单,但会引入所有应用模块。
typescript
// ✅ 推荐:按需加载 Tally 模块
import { open, increment, decrement, reset, get } from 'protocol-launcher/tally'
// 也可以从根包导入,但会包含所有应用模块
// import { tally } from 'protocol-launcher'
场景一:打开 Tally 应用 (open)
最简单的用法,直接唤起 Tally 应用:
typescript
import { open } from 'protocol-launcher/tally'
const url = open()
场景二:增加计数 (increment)
这是最常用的功能。你可以为指定的计数集(Tally Set)和计数器(Tally)增加值:
typescript
import { increment } from 'protocol-launcher/tally'
const url = increment({
tallySet: 'Game Score', // 计数集名称
tally: 'Player 1', // 计数器名称
})
你也可以使用 UUID 来精确指定:
typescript
const url = increment({
tallySetID: 'abc-123',
tallyID: 'xyz-789',
})
场景三:减少计数 (decrement)
与增加计数类似,减少计数用于减少指定计数器的值:
typescript
import { decrement } from 'protocol-launcher/tally'
const url = decrement({
tallySet: 'Game Score',
tally: 'Player 1',
})
场景四:重置计数 (reset)
将指定计数器重置为初始值,适用于日常习惯追踪的场景:
typescript
import { reset } from 'protocol-launcher/tally'
const url = reset({
tallySet: 'Daily Habits',
tally: 'Exercise',
})
场景五:获取计数值 (get)
获取指定计数器的当前值,需要提供回调 URL 来接收返回值:
typescript
import { get } from 'protocol-launcher/tally'
const url = get({
tallySet: 'Daily Habits',
tally: 'Exercise',
'x-success': 'myapp://callback', // 回调 URL
})
你还可以自定义返回值参数名:
typescript
const url = get({
tallySetID: 'abc-123',
tallyID: 'xyz-789',
'x-success': 'myapp://callback',
retParam: 'count', // 自定义参数名
})
为什么选择 Protocol Launcher?
- 自动编码与参数处理 :Tally 的协议对参数编码有严格要求。库内部会自动处理所有的转义逻辑,确保生成的 URL 在唤起应用时绝不乱码。
- 类型安全与参数提示:TypeScript 的智能补全会确保你提供了正确的参数,并提醒你可选的计数集和计数器名称。
- 一致的用户体验:通过封装复杂的协议逻辑,你可以专注于业务功能的实现,而不用担心不同操作系统下协议触发的细微差异。
- 极致的按需加载 (Tree Shaking) :采用了模块化设计,支持按需加载以最小化包体积:
- 推荐方式 :使用子路径导入(如
import { increment } from 'protocol-launcher/tally'),这样构建工具只会打包相关的代码。 - 全量方式 :也可以从根包导入(如
import { tally } from 'protocol-launcher'),建议生产环境始终使用按需加载。
- 推荐方式 :使用子路径导入(如
- 灵活的标识方式 :支持通过名称(
tallySet/tally)或 UUID(tallySetID/tallyID)来指定计数器,适应不同场景需求。
结语
通过 Protocol Launcher,你可以将 Tally 的计数功能无缝集成到你的效率工具、游戏记分系统或自动化工作流中。无论是在个人习惯追踪场景中,还是在团队协作的记分板中,它都是连接 Web 与本地 Tally 应用最优雅的桥梁。
🔗 相关链接
- Protocol Launcher 官网:https://protocol-launcher.huayi-data.com/
- Tally 模块文档:Tally | Protocol Launcher