TGViewer
Мобильный трудоголик Мобильный трудоголик @hardworkerit · 1.65K subscribers
Post #156 1.08K
⏰ Работаем с таймерами через AlarmKit: новый фреймворк Apple.

На WWDC 2025 представили AlarmKit — фреймворк для создания будильников и таймеров, которые работают даже в беззвучном режиме и при активном Focus. В отличие от обычных уведомлений, AlarmKit всегда показывает баннер и воспроизводит звук!


1️⃣ Запрос разрешения.

Добавим в Info.plist ключ NSAlarmKitUsageDescription с описанием, зачем приложению нужны таймеры. Затем запросим авторизацию:


import AlarmKit

let manager = AlarmManager.shared
let state = try await manager.requestAuthorization()



2️⃣ Настройка таймера.

Создадим кастомизированный алерт и атрибуты:


let alert = AlarmPresentation.Alert(
title: "Готово!",
stopButton: AlarmButton(text: "Готово", systemImageName: "checkmark")
)

let attributes = AlarmAttributes<TimerData>(
presentation: AlarmPresentation(alert: alert),
tintColor: .blue
)

let timer = try await manager.schedule(
id: UUID(),
configuration: .timer(duration: 30, attributes: attributes)
)



3️⃣ Live Activity и Dynamic Island.

Добавим виджет для отображения обратного отсчета на экране блокировки и в Dynamic Island:


// В виджете:
Text(timerInterval: Date.now...countdown.fireDate)
.monospacedDigit()



4️⃣ Список активных таймеров.

Использование alarmUpdates для отслеживания состояния:


for await alarms in AlarmManager.shared.alarmUpdates {
// Обновляем список таймеров
}



⚠️ Практические советы.

🔹 Всегда проверяйте статус авторизации authorizationState перед планированием.
🔹 Используйте кастомные метаданные через AlarmMetadata для передачи дополнительной информации.
🔹 Для паузы/возобновления используйте методы pause() и resume().
🔹 Обрабатывайте ошибки отмены через try-catch.


❌ Важные ограничения.

🔸 Максимальное количество активных будильников: 50 на устройство.
🔸 Минимальная длительность таймера: 1 секунда.
🔸 Максимальная длительность: 23 часа 59 минут 59 секунд.


💡 Вывод:

AlarmKit — мощный инструмент для создания надежных таймеров, но требует настройки нескольких компонентов. Идеально для кулинарных таймеров, напоминаний и любых приложений, где важно точное время.


➡️ Подписаться на канал
Мобильный трудоголик
  • 👍 20
  • ❤ 5
  • 🔥 2
  • 🙏 1
More from @hardworkerit
  1. Oct 9, 2026👨‍💻 Умение адаптироваться - важный навык айтишника, который часто недооценивают. В ИТ не…
  2. Oct 8, 2026🈸 Apple обяжет разработчиков поддерживать iPhone Duo. Apple опубликовала требования к при…
  3. Oct 6, 2026🔢 Swift 6.4: новая диагностика ретейн циклов. В Swift 6.4 появилась новая диагностика, ко…
  4. Oct 4, 2026🔢 SwiftUI: определение угла раскрытия iPhone Duo. В iOS 27.1 появился модификатор .onHing…
  5. Oct 2, 2026👣 Архитекторы, тестировщики и кодеры. Создаем мультиагентную команду Разработка с ИИ-аген…
  6. Oct 1, 2026🔢 Работа с Picture-in-Picture в iOS. Picture-in-Picture - системная функция iOS, которая…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →