Files
daily-notification-plugin/doc/GETTING_STARTED.md

165 lines
3.7 KiB
Markdown

# Getting Started
**Purpose:** Step-by-step installation and setup guide for Daily Notification Plugin.
**Owner:** Development Team
**Last Updated:** 2025-12-22
**Status:** active
---
## Installation
### npm
```bash
npm install @timesafari/daily-notification-plugin
```
### yarn
```bash
yarn add @timesafari/daily-notification-plugin
```
### pnpm
```bash
pnpm add @timesafari/daily-notification-plugin
```
---
## Platform Setup
### iOS
1. **Add to `Info.plist`:**
```xml
<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
<string>org.timesafari.dailynotification.fetch</string>
</array>
```
2. **Register background task in `AppDelegate.swift`:**
```swift
import BackgroundTasks
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
BGTaskScheduler.shared.register(forTaskWithIdentifier: "org.timesafari.dailynotification.fetch",
using: nil) { task in
// Handle background fetch task
}
return true
}
```
### Android
1. **Add permissions to `AndroidManifest.xml`:**
```xml
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
```
> **Note on `USE_EXACT_ALARM`:** The `USE_EXACT_ALARM` permission is restricted
> by Google on Android. Apps that declare it must be primarily dedicated to alarm
> or calendar functionality. Google will reject apps from the Play Store that use
> this permission for other purposes. This plugin uses `SCHEDULE_EXACT_ALARM`
> instead, which is sufficient for scheduling daily notifications.
2. **Register WorkManager in `Application.kt`:**
```kotlin
import androidx.work.Configuration
import androidx.work.WorkManager
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
WorkManager.initialize(
this,
Configuration.Builder()
.setMinimumLoggingLevel(android.util.Log.INFO)
.build()
)
}
}
```
---
## Basic Usage
### 1. Import the Plugin
```typescript
import { DailyNotification } from '@timesafari/daily-notification-plugin';
```
### 2. Request Permission
```typescript
const { state } = await DailyNotification.requestPermission();
if (state !== 'granted') {
console.error('Notification permission denied');
return;
}
```
### 3. Create a Schedule
```typescript
const { schedule } = await DailyNotification.createSchedule({
id: 'morning-notification',
kind: 'notify',
clockTime: '09:00',
enabled: true
});
```
### 4. Verify Schedule
```typescript
const { schedules } = await DailyNotification.getSchedules();
console.log('Active schedules:', schedules);
```
---
## Next Steps
- **[Quick Start Guide](./examples/QUICK_START.md)** — Minimal working example
- **[Common Patterns](./examples/COMMON_PATTERNS.md)** — Common integration patterns
- **[Integration Guide](./integration/INTEGRATION_GUIDE.md)** — Full integration guide
- **[Troubleshooting](./TROUBLESHOOTING.md)** — Common issues and solutions
---
## Authoritative Documentation
- **[Documentation Index](./00-INDEX.md)** — Complete documentation navigation
- **[System Invariants](./SYSTEM_INVARIANTS.md)** — Enforced system invariants
- **[CI Usage](../ci/README.md)** — Local CI documentation (`./ci/run.sh`)
---
## Support
For issues, questions, or contributions:
1. Check [Troubleshooting Guide](./TROUBLESHOOTING.md)
2. Review [System Invariants](./SYSTEM_INVARIANTS.md)
3. Check [Progress Documentation](./progress/00-STATUS.md) for current status
---
**See also:**
- [README.md](../README.md) — Complete plugin documentation
- [Performance Characteristics](./PERFORMANCE.md) — Performance expectations