【Swift】通知を毎日届くようにする方法!リマインド機能の実装
この記事からわかること
- Swiftでプッシュ通知を毎日届くようにする実装する方法
- ローカル通知でリマインド機能
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Xcode:15.4
- iOS:17.0
- Swift:5.9
- macOS:Sonoma 14.1
ローカル通知を毎日届く(リマインド)ようにするには?
Swiftでローカルプッシュ通知を指定した時間に毎日届くようにするにはUNCalendarNotificationTrigger
をDateComponents
で指定できるイニシャライザを使用ます。
init(dateMatching dateComponents: DateComponents, repeats: Bool)
dateComponents.weekday
プロパティで曜日情報を指定することができるのでここに通知を送信したい曜日を渡します。。1
が日曜日、7
が土曜日になっているので専用の列挙型Weekday
などを作成しておくと直感的に操作することができるようになります。
private enum Weekday: Int, CaseIterable {
case sunday = 1
case monday = 2
case tuesday = 3
case wednesday = 4
case thursday = 5
case friday = 6
case saturday = 7
}
あとは毎日19:00にリマインドしたいなら以下のように全曜日のUNCalendarNotificationTrigger
を作成して、全て登録すればOKです。
let hour = 19
let minute = 0
// 毎週設定するために各曜日で登録する
Weekday.allCases.forEach { week in
var dateComponents = DateComponents()
dateComponents.hour = hour
dateComponents.minute = minute
dateComponents.weekday = week.rawValue
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: NOTIFY_ID + String(week.rawValue), content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request)
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。