Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AlarmKitで明後日起きれるアラームアプリを作る
Search
Trickart
May 15, 2026
Programming
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AlarmKitで明後日起きれるアラームアプリを作る
potatotips #95
https://potatotips.connpass.com/event/389026/
Trickart
May 15, 2026
More Decks by Trickart
See All by Trickart
Xcode MCPでスクリーンショット撮りを90%自動化する
trickart
0
170
External Accessory入門
trickart
0
980
日本語でもいい感じに改行したい!! / Split Japanese sentence for UILabel and SwiftUI Text
trickart
3
4.2k
Other Decks in Programming
See All in Programming
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
280
自分的「カンファレンスの楽しみ方」
syumai
0
170
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
550
Loosening the Reins: Go Generics Get More Flexible
kuro_kurorrr
0
360
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
210
[DroidKaigi 26] How We Moved from Android Studio to Slack
thisaay
0
150
Go 1.27 における memory allocation の高速化
andpad
0
370
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
承認済みなのに差戻しできてしまうバグ、型で潰せます
shinchit
0
130
[PyCon KR 2026] More Variants, More Diversity for AI Accelerators
achimnol
0
130
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.3k
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
150
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
460
HDC tutorial
michielstock
2
840
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
First, design no harm
axbom
PRO
2
1.3k
For a Future-Friendly Web
brad_frost
183
10k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
330
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Mind Mapping
helmedeiros
PRO
1
340
New Earth Scene 8
popppiees
3
2.5k
Transcript
AlarmKitで 明後日起きれる アラームアプリを作る trickart 1
自己紹介 trickart / POSレジアプリ開発 どうしても明後日起きたくて作った アプリの話です 2
こんな経験ありませんか? 出張・旅行で 明後日の朝早く起きたい しかしiOS標準アラームで設定しようとすると… 基本24時間先までしか設定できない 明後日7:00に起きたいのに7:00と設定すると明日7:00になってしまう 「明日設定しよう」→忘れる 明後日を設定できるアラームアプリが欲しい 3
あさってアラーム DayAfterTomorrow 明後日のアラームが設定できるアプリ 開くと2日後の日付がもう選ばれている iOS 26+ / AlarmKit 製 4
AlarmKitとは? WWDC2025(Session 230)で発表されたフレームワーク(iOS 26+) サードパーティアプリからOS標準アラームと同等のアラームを鳴らせる サイレント・集中モード貫通 Apple Watch鳴動 5
明後日を指定する - .fixed モードによる日時指定 AlarmKitの Alarm.Schedule には3つのスケジュール方式がある .relative(repeats: .never) …
24時間以内・単発 .relative(repeats: .weekly([.monday])) … 毎週月曜 .fixed(Date) … 特定の日の特定時刻 ← あさってアラームはこれ // 明後日の日付 + 7:00 を組み立てる var components = Calendar.current.dateComponents( [.year, .month, .day], from: dayAfterTomorrow ) components.hour = 7 components.minute = 0 // Alarm.Schedule生成 let schedule: Alarm.Schedule = .fixed(Calendar.current.date(from: components)!) 6
Alarm Configurationにscheduleを渡して スケジュールする let configuration = AlarmManager.AlarmConfiguration( countdownDuration: .init(preAlert: nil,
postAlert: 5 * 60), // Snoozeの長さ schedule: schedule, // ← さっきの .fixed attributes: AlarmAttributes(presentation: .init(alert: alertContent), tintColor: .orange), stopIntent: StopAlarmIntent(alarmID: id.uuidString), // LiveActivityIntent secondaryIntent: SnoozeAlarmIntent(alarmID: id.uuidString) // LiveActivityIntent ) try await AlarmManager.shared.schedule(id: id, configuration: configuration) attributes タイトルや色を設定できる 7
これでよいかと思いきや…落とし穴 タイムゾーン問題 .fixed(Date) は UTC絶対時刻 として保存される 東京(UTC+9)で「4/12 7:00」設定 → UTC
4/11 22:00 ニューヨーク(UTC-4)に移動すると… → 現地 4/11 18:00 に鳴る APIの仕様としては自然だが、自分のユースケースとしてはちょっと困る → タイムゾーン変更を検知して 再スケジュール が必要 8
3層補正アーキテクチャ アプリ起動時・アプリが閉じられているとき・アプリ起動中の3つでカバーする 対策 手段 メリット・デメリット 1 起動時に lastKnownTimeZone と比較 権限不要・確実
開かないと直らない 2 BGAppRefreshTask で定期チェック 起動しなくても動く 実行保証なし 3 NSSystemTimeZoneDidChange を購読 即時反映 起動中限定 9
まとめ AlarmKitにはiOS標準のアラーム同等の機能がある サイレント貫通・Live Activity・Dynamic Island 24時間先まで・weeklyで鳴らせる 使いこなせばiOS標準のアラーム"以上"の事ができる 24時間以上先:Alarm.Suchedule.fixed(Date) で明後日でも確実に起きられる 3層TZ補正:起動時
/ BGAppRefresh / システム通知 を重ねる 10
Thank you! ref: AlarmKit – WWDC2025 Session 230 AlarmKit |
Apple Developer Documentation 11