Matthew Raymer a54ba34cb9 feat(ios): Enhance battery optimization and notification management
Description:
- Add battery status and power state monitoring
- Implement adaptive scheduling based on battery levels
- Add maintenance worker for background tasks
- Enhance logging with structured DailyNotificationLogger
- Add configuration management with DailyNotificationConfig
- Define constants in DailyNotificationConstants
- Improve error handling and recovery mechanisms

Testing:
- Add comprehensive test coverage for battery optimization
- Add test coverage for power state management
- Add test coverage for maintenance tasks
- Add test coverage for configuration management
- Add test coverage for constants validation

Documentation:
- Add comprehensive file-level documentation
- Add method-level documentation
- Add test documentation
- Add configuration documentation

This commit improves the iOS implementation's reliability and battery
efficiency by adding robust error handling, logging, and configuration
management to make the plugin more maintainable and debuggable.
2025-03-28 03:50:54 -07:00

Daily Notification Plugin for Capacitor

A Capacitor plugin for scheduling and managing daily notifications with advanced features and robust error handling.

Features

  • Schedule daily notifications with custom time and content
  • Support for different priority levels
  • Timezone-aware scheduling
  • Offline support with caching
  • Comprehensive permission handling
  • Automatic retry logic
  • Detailed notification status tracking
  • Configurable settings management

Installation

npm install daily-notification-plugin
npx cap sync

iOS Setup

No additional setup required for iOS. The plugin automatically handles all necessary configurations.

Usage

Basic Usage

import { DailyNotification } from 'daily-notification-plugin';

// Schedule a daily notification
await DailyNotification.scheduleDailyNotification({
  url: 'https://api.example.com/updates',
  time: '09:00',
  title: 'Daily Update',
  body: 'Your daily update is ready'
});

Advanced Features

Custom Priority

await DailyNotification.scheduleDailyNotification({
  url: 'https://api.example.com/updates',
  time: '09:00',
  priority: 'high'
});

Timezone Support

await DailyNotification.scheduleDailyNotification({
  url: 'https://api.example.com/updates',
  time: '09:00',
  timezone: 'America/New_York'
});

Check Notification Status

const status = await DailyNotification.getNotificationStatus();
console.log('Notification status:', status);

Update Settings

await DailyNotification.updateSettings({
  sound: true,
  priority: 'high',
  timezone: 'America/Los_Angeles'
});

API Documentation

Methods

scheduleDailyNotification(options: ScheduleOptions)

Schedule a new daily notification.

getLastNotification()

Get information about the last delivered notification.

cancelAllNotifications()

Cancel all pending notifications.

getNotificationStatus()

Get current notification status and settings.

updateSettings(settings: NotificationSettings)

Update notification settings.

checkPermissions()

Check current notification permissions.

requestPermissions()

Request notification permissions.

Types

interface ScheduleOptions {
  url: string;
  time: string;
  title?: string;
  body?: string;
  sound?: boolean;
  priority?: 'high' | 'default' | 'low';
  timezone?: string;
}

interface NotificationSettings {
  sound?: boolean;
  priority?: string;
  timezone?: string;
}

Error Handling

The plugin provides detailed error messages for various scenarios:

  • Invalid parameters
  • Permission issues
  • Scheduling failures
  • Invalid time formats
  • Invalid timezone identifiers
  • Invalid priority values

Contributing

Contributions are welcome! Please read our contributing guidelines and submit pull requests to our GitHub repository.

License

MIT License - see LICENSE file for details

Description
No description provided
Readme MIT 9.8 MiB
Languages
Java 44.8%
TypeScript 17.6%
Swift 13.5%
Kotlin 8.5%
Vue 4.5%
Other 11.1%