Matthew Raymer 450352718f feat(android): Enhance battery optimization and notification management
- Add BatteryOptimizationSettings class for centralized power management
- Implement adaptive scheduling based on power state and battery level
- Add comprehensive battery monitoring and status tracking
- Improve notification reliability with WorkManager integration
- 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

Security:
- Add proper permission checks for battery optimization
- Implement secure wake lock management
- Add validation for notification parameters
- Use FLAG_IMMUTABLE for PendingIntents
- Implement proper cleanup in handleOnDestroy

Testing:
- Add test coverage for battery optimization features
- Add test coverage for notification scheduling
- Add test coverage for power state management
- Add test coverage for maintenance tasks

Documentation:
- Add comprehensive file-level documentation
- Add method-level documentation
- Add security considerations
- Add performance optimization notes

This commit improves the Android implementation's reliability and battery
efficiency while maintaining feature parity with iOS. It adds robust
error handling, logging, and configuration management to make the plugin
more maintainable and debuggable.
2025-03-28 09:38:28 +00: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 10 MiB
Languages
Java 43.5%
TypeScript 17.1%
Swift 13.1%
Kotlin 8.8%
Shell 6.5%
Other 11%