Fixed Swift compilation errors preventing iOS build: - Added explicit self capture [self] in closures in DailyNotificationReactivationManager - Removed invalid BGTaskScheduler.shared.registeredTaskIdentifiers API call - Fixed initialization order in DailyNotificationModel (verifyEntities after container init) Added missing configureNativeFetcher method to iOS plugin: - Implemented method matching Android functionality - Stores configuration in UserDefaults for persistence - Registered method in pluginMethods array - Supports both jwtToken and jwtSecret parameters for compatibility This resolves the runtime error "configureNativeFetcher is not a function" that was preventing the test app from configuring the plugin.
iOS Implementation
This directory contains the iOS-specific implementation of the DailyNotification plugin.
Last Updated: 2025-12-08
Version: 1.1.0
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
- App Launch Recovery (
DailyNotificationReactivationManager.swift)- Cold start recovery
- Termination recovery
- Boot recovery
- Scenario detection
- Missed notification detection
- Future notification verification
- Core Data Integration
- NotificationContent, NotificationDelivery, NotificationConfig entities
- DAO classes for all entities (CRUD operations)
- Data type conversions (Date ↔ Int64, etc.)
- PersistenceController with entity verification
- Logging & Observability
- Comprehensive recovery logging
- Metrics recording in Core Data History
- Execution time tracking
- Error Handling
- iOS-specific error codes
- Graceful error handling (non-fatal)
- Partial results on failures
- API Methods
- iOS-specific notification permission methods
- Background task status methods
- Pending notifications query
⚠️ PARTIALLY IMPLEMENTED:
BGTaskSchedulerfor background data fetching (basic registration)- Background task management (needs enhancement)
❌ NOT IMPLEMENTED (Planned):
- Silent push nudge support
- T–lead prefetch logic (enhancement)
Implementation Details
The iOS implementation currently uses:
UNUserNotificationCenterfor notification management ✅UserDefaultsfor local data storage ✅- iOS notification categories and actions ✅
- Power management and battery optimization ✅
- Core Data for structured data persistence ✅
- BGTaskScheduler for background task registration ✅
- App Launch Recovery for notification reconciliation ✅
Architecture:
- ReactivationManager: Handles app launch recovery scenarios
- DAO Layer: Core Data access objects for all entities
- Data Conversions: Type conversion utilities (Date, Int, String, JSON)
- History Recording: Core Data persistence for recovery metrics
- Error Handling: Comprehensive error codes and graceful degradation
Planned additions:
- Enhanced 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
DailyNotificationPlugin.swift: Main plugin class ✅DailyNotificationPowerManager.swift: Power state management ✅DailyNotificationConfig.swift: Configuration options ✅DailyNotificationMaintenanceWorker.swift: Maintenance tasks ✅DailyNotificationLogger.swift: Logging system ✅DailyNotificationReactivationManager.swift: App launch recovery ✅HistoryDAO.swift: Recovery history persistence ✅NotificationContentDAO.swift: Notification content CRUD ✅NotificationDeliveryDAO.swift: Delivery tracking CRUD ✅NotificationConfigDAO.swift: Configuration CRUD ✅DailyNotificationDataConversions.swift: Type conversion utilities ✅DailyNotificationErrorCodes.swift: iOS-specific error codes ✅DailyNotificationModel.swift: Core Data model & PersistenceController ✅
Background Task Components:
DailyNotificationBackgroundTasks.swift: Background task handlers ⚠️ (basic)DailyNotificationBackgroundTaskManager.swift: Task management ⚠️ (basic)
Implementation Notes
- Uses UserDefaults for lightweight data storage ✅
- Uses Core Data for structured data persistence ✅
- Implements proper battery optimization handling ✅
- Supports iOS notification categories and actions ✅
- Handles background refresh limitations ✅
- App launch recovery with scenario detection ✅
- Comprehensive error handling (non-fatal) ✅
- Metrics recording and observability ✅
- BGTaskScheduler registration ✅
Recovery Scenarios Supported:
- ✅ Cold Start: App terminated, notifications may need verification
- ✅ Termination: App terminated, all notifications cleared
- ✅ Boot: Device rebooted, full recovery needed
- ✅ Warm Start: No recovery needed (optimization)
Planned Features:
- Enhanced background task budget management
- Silent push notification support
- Advanced prefetch logic
Testing
Run iOS-specific tests with:
npm run test:ios