概要

UserNotifications フレームワーク(ローカル通知)を使い、ユーザーが設定した時刻に「今日の豆知識」リマインダーを毎日配信。 プッシュ通知(APNs)は使用せず、サーバー不要のローカル完結型。

関連画面

処理フロー

  1. 初回 ON 時、通知許可をリクエスト
  2. 許可されたら指定時刻で UNCalendarNotificationTrigger をスケジュール
  3. 毎日その時刻にリマインダー表示
  4. OFF 時、すべての通知を removeAllPendingNotificationRequests でキャンセル
  5. 時刻変更時は再スケジュール

API

@MainActor
final class NotificationService {
    func setEnabled(_ enabled: Bool, at time: Date)
    func setTime(_ time: Date)
    func getEnabled() -> Bool
    func scheduleDailyNotification(at time: Date)
}

通知内容

項目内容
title「今日の豆知識」
body「新しい知識をチェックしよう」 or その日の tip タイトル
sounddefault
repeatstrue(毎日)

ビジネスルール

外部連携

連携先用途
UserNotificationsローカル通知のスケジューリング
Info.plist通知許可ダイアログの表示文言

エラー処理

発生条件対応
通知許可拒否「設定アプリで通知を有効に」アラート + 設定アプリ起動誘導
scheduleDailyNotification 失敗Logger.error、UI 上は無視

実装メモ

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成