mcpField
A
alarmkit

alarmkit

github.com/rshankras开发86474 次安装2 天前更新
代码仓库

关于 alarmkit

alarmkit 是用于实现和审查 AlarmKit 闹钟与计时器的编码技能,按调度、呈现和 Live Activities 整理参考,并提示常见配置与状态管理问题。

主要功能

  1. 01一次性、重复及倒计时调度
  2. 02闹钟授权与配置指引
  3. 03提醒界面和按钮定制
  4. 04Live Activities 与 Widget 扩展指引
  5. 05常见错误审查清单

适用场景

  1. 01为应用添加闹钟或计时器
  2. 02审查 AlarmKit 授权和调度代码
  3. 03在锁定屏幕或 Dynamic Island 显示倒计时

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rshankras/claude-code-apple-skills --skill alarmkit

安装后在 Claude Code 中输入/alarmkit确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

live-activities.md
presentation.md
scheduling.md

详细介绍

AlarmKit

用于安排闹钟和倒计时器的框架,支持自定义 UI、集成实时活动,以及覆盖专注模式/静音模式。可避免最常见的错误:使用错误的授权属性名称、遗漏 Info.plist 键,以及忘记为倒计时展示添加小组件扩展。

此技能的触发条件

在用户遇到以下情况时使用此技能:

  • 要求添加、修复或检查闹钟或计时器功能
  • 提及 AlarmKit、AlarmManager 或 AlarmPresentation
  • 希望安排一次性、重复或倒计时闹钟
  • 询问闹钟提醒上的稍后提醒、停止或重复按钮
  • 希望闹钟显示在 Dynamic Island 或锁定屏幕上(实时活动)
  • 提及为闹钟覆盖专注模式或静音模式
  • 询问 AlarmAttributes 或 AlarmMetadata

决策树

根据用户的需求选择合适的参考文件:

What do you need?
|
+-- Schedule an alarm (one-time, repeating, or timer)
|   --> scheduling.md
|       +-- One-time alarm: Alarm.Schedule.relative + .repeats: .never
|       +-- Repeating alarm: Alarm.Schedule.relative + .repeats: .weekly(weekdays)
|       +-- Countdown timer: CountdownDuration (no schedule)
|       +-- Authorization & Info.plist setup
|       +-- Managing alarms: pause, resume, cancel
|
+-- Customize alarm UI (alert, countdown, paused screens)
|   --> presentation.md
|       +-- AlarmPresentation.Alert: title, stop, snooze/repeat buttons
|       +-- AlarmPresentation.Countdown: title, pause button
|       +-- AlarmPresentation.Paused: title, resume button
|       +-- Custom buttons with AlarmButton
|       +-- Tint color and metadata via AlarmAttributes
|
+-- Show alarm on Dynamic Island / Lock Screen
    --> live-activities.md
        +-- Widget extension with ActivityConfiguration
        +-- AlarmAttributes conformance
        +-- Custom AlarmMetadata protocol

API 可用性

API最低版本参考文件
AlarmManageriOS 26scheduling.md
Alarm / Alarm.ScheduleiOS 26scheduling.md
AlarmPresentation (.alert, .countdown, .paused)iOS 26presentation.md
AlarmAttributesiOS 26live-activities.md
AlarmMetadataiOS 26live-activities.md
AlarmButtoniOS 26presentation.md
CountdownDurationiOS 26scheduling.md
alarmUpdates async sequenceiOS 26scheduling.md
authorizationUpdates async sequenceiOS 26scheduling.md

常见错误——快速参考

#错误修复方法详情
1使用 .authorizationStatus 而非 .authorizationState属性是 AlarmManager.shared.authorizationState,不存在 authorizationStatusscheduling.md
2忘记在 Info.plist 中添加 NSAlarmKitUsageDescription调用 requestAuthorization() 前,添加该键并设置面向用户的说明文字scheduling.md
3创建倒计时器时使用了日程安排计时器只使用 CountdownDuration,不要传入日程安排scheduling.md
4倒计时展示缺少小组件扩展倒计时和暂停状态的 UI 需要一个 ActivityConfiguration(for: AlarmAttributes.self) 小组件live-activities.md
5未持久化闹钟 UUID保存 Alarm.id(UUID),以便之后暂停、恢复或取消闹钟scheduling.md
6未监听 alarmUpdates 以同步状态使用 alarmUpdates 异步序列,让本地状态与系统保持同步scheduling.md

检查清单

检查 AlarmKit 代码时,请确认:

  • Info.plist——存在 NSAlarmKitUsageDescription,且说明内容有意义
  • 授权——安排闹钟前调用 requestAuthorization();妥善处理用户拒绝授权的情况
  • 正确的属性——使用 .authorizationState,而非 .authorizationStatus
  • 闹钟 ID 持久化——保存闹钟 UUID(例如使用 UserDefaults、SwiftData),以便之后管理
  • 状态观察——使用 alarmUpdates 异步序列,使 UI 保持同步
  • 小组件扩展——使用倒计时或暂停状态展示时,扩展必须存在
  • 错误处理——妥善处理 schedule()、pause()、resume()、cancel() 调用中的错误
  • 系统限制——代码考虑到系统对活动闹钟数量的限制
  • 真机测试——在实体设备上测试闹钟,而不只是使用 Simulator

参考文件

文件内容
scheduling.md授权、创建一次性闹钟/重复闹钟/计时器、管理闹钟、观察更新
presentation.md提醒、倒计时、暂停状态 UI 自定义、按钮、色调
live-activities.md小组件扩展、AlarmAttributes、AlarmMetadata、Dynamic Island

评论

支持 Markdown