You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.2 KiB
4.2 KiB
Daily Notification Plugin
A Native-First Capacitor plugin for reliable daily notifications across Android, iOS, and Web platforms.
Key Features
- Native-First Architecture: Optimized for mobile platforms with offline-first design
- Shared SQLite Storage: Single database file with WAL mode for concurrent access
- TTL-at-Fire Enforcement: Skip stale notifications before delivery
- Rolling Window Safety: Always keep today's notifications armed
- Cross-Platform: Unified API across Android, iOS, and Web
- Production Ready: Comprehensive error handling, performance optimization, and monitoring
Quick Start
import { DailyNotification } from '@timesafari/daily-notification-plugin';
// Configure and schedule
await DailyNotification.configure({
storage: 'shared',
ttlSeconds: 1800,
prefetchLeadMinutes: 15
});
await DailyNotification.scheduleDailyNotification({
url: 'https://api.example.com/daily-content',
time: '09:00',
title: 'Daily Update',
body: 'Your daily notification is ready'
});
Installation
npm install @timesafari/daily-notification-plugin
Documentation
- Complete Usage Guide - Comprehensive guide with examples and best practices
- API Reference - Complete method and type definitions
- Implementation Roadmap - Technical implementation details
- Notification System Spec - Architecture and design principles
- Glossary - Key terminology and concepts
Examples
- Basic Usage:
examples/usage.ts
- Phase-by-Phase Implementation:
- Phase 1:
examples/phase1-*.ts
(Core Infrastructure) - Phase 2:
examples/phase2-*.ts
(Platform Completion) - Phase 3:
examples/phase3-*.ts
(Network Optimization)
- Phase 1:
- Advanced Scenarios:
examples/advanced-usage.ts
- Enterprise Features:
examples/enterprise-usage.ts
Configuration
Android
Add the following permissions to your AndroidManifest.xml
:
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<uses-permission android:name="android.permission.USE_EXACT_ALARM" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Development
Prerequisites
- Node.js 14 or later
- Android Studio
- Android SDK
- Gradle
Building
# 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
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - 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