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
350
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
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
120
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
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
410
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
170
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
2
2.5k
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
150
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
160
ALB ログから Trace を気合で繋げる技術
fohte
7
880
Oxlintはいいぞ(続)
yug1224
1
560
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
6
2.5k
初めての模倣学習とVLA
natsutan
0
500
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
2
350
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
1.1k
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Mobile First: as difficult as doing things right
swwweet
225
10k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
A Tale of Four Properties
chriscoyier
163
24k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Accessibility Awareness
sabderemane
1
200
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
The SEO identity crisis: Don't let AI make you average
varn
0
550
AI: The stuff that nobody shows you
jnunemaker
PRO
9
980
Leo the Paperboy
mayatellez
8
2.2k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
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