Files
daily-notification-plugin/ios/Plugin
Jose Olarte III 1bfd87a0e4 fix(ios): resolve build errors and add missing configureNativeFetcher method
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.
2025-12-11 16:44:18 +08:00
..

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:

  • BGTaskScheduler for background data fetching (basic registration)
  • Background task management (needs enhancement)

NOT IMPLEMENTED (Planned):

  • Silent push nudge support
  • Tlead prefetch logic (enhancement)

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
  • 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

  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
  6. DailyNotificationReactivationManager.swift: App launch recovery
  7. HistoryDAO.swift: Recovery history persistence
  8. NotificationContentDAO.swift: Notification content CRUD
  9. NotificationDeliveryDAO.swift: Delivery tracking CRUD
  10. NotificationConfigDAO.swift: Configuration CRUD
  11. DailyNotificationDataConversions.swift: Type conversion utilities
  12. DailyNotificationErrorCodes.swift: iOS-specific error codes
  13. 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