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
310
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
160
External Accessory入門
trickart
0
960
日本語でもいい感じに改行したい!! / Split Japanese sentence for UILabel and SwiftUI Text
trickart
3
4.2k
Other Decks in Programming
See All in Programming
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.8k
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
500
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
360
今さら聞けない .NET CLI
htkym
0
190
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
140
Foundation Models frameworkで画像分析
ryodeveloper
1
610
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
110
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
550
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
570
yield再入門 #phpcon
o0h
PRO
0
1k
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
180
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
110
Featured
See All Featured
Practical Orchestrator
shlominoach
191
12k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
610
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
The Invisible Side of Design
smashingmag
301
52k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
KATA
mclloyd
PRO
35
15k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
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