a54ba34cb9c9fe1e096efba434428ba60046fbec
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.
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
Languages
Java
44.8%
TypeScript
17.6%
Swift
13.5%
Kotlin
8.5%
Vue
4.5%
Other
11.1%