alarmkit

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

AlarmKit

AlarmKit

Framework for scheduling alarms and countdown timers with custom UI, Live Activities integration, and focus/silent mode override. Prevents the most common mistakes: using the wrong authorization property name, omitting the Info.plist key, and forgetting the widget extension for countdown presentations.
一款用于调度闹钟和倒计时计时器的框架,支持自定义UI、Live Activities集成,以及专注/静音模式覆盖。可避免最常见的错误:使用错误的授权属性名称、遗漏Info.plist密钥、忘记用于倒计时展示的小组件扩展。

When This Skill Activates

技能适用场景

Use this skill when the user:
  • Asks to add, fix, or review alarm or timer functionality
  • Mentions AlarmKit, AlarmManager, or AlarmPresentation
  • Wants to schedule one-time, repeating, or countdown alarms
  • Asks about snooze, stop, or repeat buttons on alarm alerts
  • Wants alarms to appear on Dynamic Island or Lock Screen (Live Activities)
  • Mentions overriding Focus or silent mode for alarms
  • Asks about AlarmAttributes or AlarmMetadata
当用户出现以下需求时,使用本技能:
  • 请求添加、修复或审核闹钟计时器功能
  • 提及AlarmKitAlarmManagerAlarmPresentation
  • 需要调度一次性重复倒计时闹钟
  • 询问闹钟提醒上的贪睡停止重复按钮
  • 希望闹钟显示在Dynamic Island锁屏(Live Activities)上
  • 提及为闹钟覆盖专注模式或静音模式
  • 询问AlarmAttributesAlarmMetadata

Decision Tree

决策树

Choose the right reference file based on what the user needs:
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
根据用户需求选择合适的参考文档:
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 Availability

API兼容性

APIMinimum VersionReference
AlarmManager
iOS 18scheduling.md
Alarm
/
Alarm.Schedule
iOS 18scheduling.md
AlarmPresentation
(.alert, .countdown, .paused)
iOS 18presentation.md
AlarmAttributes
iOS 18live-activities.md
AlarmMetadata
iOS 18live-activities.md
AlarmButton
iOS 18presentation.md
CountdownDuration
iOS 18scheduling.md
alarmUpdates
async sequence
iOS 18scheduling.md
authorizationUpdates
async sequence
iOS 18scheduling.md
API最低版本参考文档
AlarmManager
iOS 18scheduling.md
Alarm
/
Alarm.Schedule
iOS 18scheduling.md
AlarmPresentation
(.alert, .countdown, .paused)
iOS 18presentation.md
AlarmAttributes
iOS 18live-activities.md
AlarmMetadata
iOS 18live-activities.md
AlarmButton
iOS 18presentation.md
CountdownDuration
iOS 18scheduling.md
alarmUpdates
async sequence
iOS 18scheduling.md
authorizationUpdates
async sequence
iOS 18scheduling.md

Top Mistakes -- Quick Reference

常见错误速查

#MistakeFixDetails
1Using
.authorizationStatus
instead of
.authorizationState
The property is
AlarmManager.shared.authorizationState
-- there is no
authorizationStatus
scheduling.md
2Forgetting
NSAlarmKitUsageDescription
in Info.plist
Add the key with a user-facing string before calling
requestAuthorization()
scheduling.md
3Creating countdown timer with a scheduleTimers use
CountdownDuration
only -- do not pass a schedule
scheduling.md
4Missing widget extension for countdown presentationsCountdown and paused UI requires an
ActivityConfiguration(for: AlarmAttributes.self)
widget
live-activities.md
5Not persisting alarm UUIDsStore the
Alarm.id
(UUID) so you can pause, resume, or cancel later
scheduling.md
6Not observing
alarmUpdates
for state sync
Use the
alarmUpdates
async sequence to keep local state in sync with the system
scheduling.md
序号错误修复方案详情参考
1使用
.authorizationStatus
而非
.authorizationState
属性应为
AlarmManager.shared.authorizationState
——不存在
authorizationStatus
scheduling.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

Review Checklist

审核清单

When reviewing AlarmKit code, verify:
  • Info.plist --
    NSAlarmKitUsageDescription
    is present with a meaningful description
  • Authorization --
    requestAuthorization()
    is called before scheduling; denial is handled gracefully
  • Correct property -- uses
    .authorizationState
    , not
    .authorizationStatus
  • Alarm ID persistence -- alarm UUIDs are stored (e.g., UserDefaults, SwiftData) for later management
  • State observation --
    alarmUpdates
    async sequence is used to keep UI in sync
  • Widget extension -- exists if countdown or paused presentations are used
  • Error handling --
    schedule()
    ,
    pause()
    ,
    resume()
    ,
    cancel()
    calls handle errors
  • System limits -- code accounts for the system limit on number of active alarms
  • Real device testing -- alarms are tested on physical devices, not just Simulator
审核AlarmKit代码时,请验证:
  • Info.plist——已添加
    NSAlarmKitUsageDescription
    且说明有意义
  • 授权——调度前已调用
    requestAuthorization()
    ;已优雅处理授权拒绝情况
  • 属性正确性——使用
    .authorizationState
    而非
    .authorizationStatus
  • 闹钟ID持久化——已存储闹钟UUID(如UserDefaults、SwiftData)以便后续管理
  • 状态监听——已使用
    alarmUpdates
    异步序列保持UI与状态同步
  • 小组件扩展——若使用倒计时或暂停展示则已存在该扩展
  • 错误处理——
    schedule()
    pause()
    resume()
    cancel()
    调用已处理错误
  • 系统限制——代码已考虑系统对活跃闹钟数量的限制
  • 真机测试——已在物理设备上测试闹钟功能,而非仅用模拟器

Reference Files

参考文档

FileContent
scheduling.mdAuthorization, one-time/repeating/timer creation, managing alarms, observing updates
presentation.mdAlert, countdown, paused UI customization, buttons, tint color
live-activities.mdWidget extension, AlarmAttributes, AlarmMetadata, Dynamic Island
文件内容
scheduling.md授权、一次性/重复/计时器创建、闹钟管理、监听更新
presentation.md提醒、倒计时、暂停UI自定义、按钮、色调
live-activities.md小组件扩展、AlarmAttributes、AlarmMetadata、Dynamic Island