# Daily Notification Plugin
A Capacitor plugin for scheduling and managing daily notifications on Android devices.
## Features
- Schedule daily notifications with precise timing
- Handle system state changes (battery, power, etc.)
- Support for adaptive scheduling based on device state
- Background task management
- Battery optimization support
- Rich logging system
- Comprehensive error handling
## Installation
```bash
npm install @timesafari/daily-notification-plugin
```
## Usage
```typescript
import { DailyNotification } from '@timesafari/daily-notification-plugin';
// Initialize the plugin
const dailyNotification = new DailyNotification();
// Schedule a daily notification
await dailyNotification.scheduleDailyNotification({
sound: true,
priority: 'default',
timezone: 'UTC'
});
// Get notification status
const status = await dailyNotification.getNotificationStatus();
// Update settings
await dailyNotification.updateSettings({
sound: false,
priority: 'high'
});
// Cancel all notifications
await dailyNotification.cancelAllNotifications();
// Get battery status
const batteryStatus = await dailyNotification.getBatteryStatus();
// Request battery optimization exemption
await dailyNotification.requestBatteryOptimizationExemption();
```
## Configuration
### Android
Add the following permissions to your `AndroidManifest.xml`:
```xml
```
## Development
### Prerequisites
- Node.js 14 or later
- Android Studio
- Android SDK
- Gradle
### Building
```bash
# Install dependencies
npm install
# Build the plugin
npm run build
# Run tests
npm test
```
### Project Structure
```
daily-notification-plugin/
├── android/ # Android implementation
│ ├── app/ # Main application module
│ └── build.gradle # Root build configuration
├── src/ # TypeScript source
├── tests/ # Test files
├── package.json # Package configuration
└── README.md # This file
```
## Contributing
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## License
This project is licensed under the MIT License - see the LICENSE file for details.
## Author
Matthew Raymer
## Security
This plugin follows security best practices:
- Uses AndroidX for modern security features
- Implements proper permission handling
- Follows Android security guidelines
- Uses secure storage for sensitive data
- Implements proper error handling
- Logs security-relevant events
- Uses secure communication channels
- Implements proper access control
- Follows Android's security model
- Uses secure defaults
## Changelog
### 1.0.0
- Initial release
- Basic notification scheduling
- System state handling
- Battery optimization support
- Background task management
- Rich logging system