Files
daily-notification-plugin/ios/Plugin
Matthew 12d8536588 feat(ios): enhance recovery logging and metrics recording
Implement comprehensive logging and observability for recovery operations:

- Add HistoryDAO for Core Data history recording
  - recordRecovery() method with execution time tracking
  - recordRecoveryFailure() method with detailed error info
  - Query helpers for history retrieval
- Enhance DailyNotificationReactivationManager logging:
  - Add execution time tracking (startTime/endTime)
  - Enhanced error logging with NSError details (domain, code, userInfo)
  - Comprehensive logging at each recovery step
  - Missed/future notification count logging
- Implement Core Data persistence for recovery metrics:
  - Recovery execution time
  - Missed notification count
  - Rescheduled notification count
  - Verified notification count
  - Error count
  - Diagnostic JSON with full recovery context
- Update recovery methods to record history:
  - Cold start recovery
  - Termination recovery
  - Boot recovery
  - All with timing and metrics

Completes section 7.1 (Recovery Logging) and 7.2 (Metrics Recording)
of iOS implementation checklist.
2025-12-09 02:37:27 -08:00
..

iOS Implementation

This directory contains the iOS-specific implementation of the DailyNotification plugin.

Current Implementation Status

IMPLEMENTED:

  • Basic plugin structure (DailyNotificationPlugin.swift)
  • UserDefaults for local data storage
  • Power management (DailyNotificationPowerManager.swift)
  • Battery optimization handling
  • iOS notification categories and actions

NOT IMPLEMENTED (Planned):

  • BGTaskScheduler for background data fetching
  • Background task management
  • Silent push nudge support
  • Tlead prefetch logic

Implementation Details

The iOS implementation currently uses:

  • UNUserNotificationCenter for notification management
  • UserDefaults for local data storage
  • iOS notification categories and actions
  • Power management and battery optimization

Planned additions:

  • BGTaskScheduler for background data fetching
  • Background task management
  • Silent push support

Native Code Location

The native iOS implementation is located in the ios/ directory at the project root.

Key Components

  1. DailyNotificationPlugin.swift: Main plugin class
  2. DailyNotificationPowerManager.swift: Power state management
  3. DailyNotificationConfig.swift: Configuration options
  4. DailyNotificationMaintenanceWorker.swift: Maintenance tasks
  5. DailyNotificationLogger.swift: Logging system

Missing Components (Planned):

  • BackgroundTaskManager.swift: Handles background fetch scheduling
  • NotificationManager.swift: Manages notification creation and display
  • DataStore.swift: Handles local data persistence

Implementation Notes

  • Uses UserDefaults for lightweight data storage
  • Implements proper battery optimization handling
  • Supports iOS notification categories and actions
  • Handles background refresh limitations

Planned Features:

  • BGTaskScheduler for reliable background execution
  • Silent push notification support
  • Background task budget management

Testing

Run iOS-specific tests with:

npm run test:ios