117 lines
3.7 KiB
Markdown
117 lines
3.7 KiB
Markdown
|
|
# Background Notifications
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
Alfred Mobile now supports **background notifications** so you can receive alerts when Alfred finishes processing work while the app is in the background.
|
||
|
|
|
||
|
|
## Features
|
||
|
|
|
||
|
|
✅ **Background alerts** - Get notified when Alfred responds, even when the app is minimized
|
||
|
|
✅ **Auto-permission request** - App asks for notification permission on first launch (Android 13+)
|
||
|
|
✅ **Smart notifications** - Only sends notifications when app is backgrounded (no spam when you're actively chatting)
|
||
|
|
✅ **Tap to open** - Tap notification to jump back to the conversation
|
||
|
|
|
||
|
|
## How It Works
|
||
|
|
|
||
|
|
### Foreground (App Open)
|
||
|
|
- Messages appear in chat instantly
|
||
|
|
- TTS plays if "Voice On" is enabled
|
||
|
|
- No notifications (you're already looking at the app)
|
||
|
|
|
||
|
|
### Background (App Minimized)
|
||
|
|
- Alfred's responses trigger a notification
|
||
|
|
- Notification shows message preview
|
||
|
|
- Tap to open app and continue conversation
|
||
|
|
|
||
|
|
## Permission
|
||
|
|
|
||
|
|
### Android 13+ (API 33+)
|
||
|
|
- **POST_NOTIFICATIONS** permission required
|
||
|
|
- App requests permission ~2 seconds after first launch
|
||
|
|
- If denied, you won't get background notifications (but everything else works)
|
||
|
|
|
||
|
|
### Android 12 and below
|
||
|
|
- No permission needed
|
||
|
|
- Notifications work automatically
|
||
|
|
|
||
|
|
## Use Cases
|
||
|
|
|
||
|
|
### Example 1: Long Processing
|
||
|
|
1. Ask Alfred a complex question
|
||
|
|
2. Switch to another app while waiting
|
||
|
|
3. Get notification when Alfred responds
|
||
|
|
4. Tap notification to see the answer
|
||
|
|
|
||
|
|
### Example 2: Background Work
|
||
|
|
1. Tell Alfred to "remind me in 10 minutes"
|
||
|
|
2. Close the app
|
||
|
|
3. Get notification when reminder fires
|
||
|
|
4. Tap to open conversation
|
||
|
|
|
||
|
|
### Example 3: Multitasking
|
||
|
|
1. Start a voice conversation
|
||
|
|
2. Switch to check email while Alfred processes
|
||
|
|
3. Get notified when Alfred responds
|
||
|
|
4. Switch back to continue
|
||
|
|
|
||
|
|
## Wake Word Model Loading
|
||
|
|
|
||
|
|
When you enable wake word mode for the first time:
|
||
|
|
1. **Toast notification**: "Loading wake word model..."
|
||
|
|
2. Model unpacks from assets (~39MB, takes 5-10 seconds)
|
||
|
|
3. **Toast notification**: "Wake word ready!"
|
||
|
|
4. You can now use "Hey Alfred" or "Alfred" to trigger voice input
|
||
|
|
|
||
|
|
## Technical Details
|
||
|
|
|
||
|
|
### Notification Channel
|
||
|
|
- **ID**: `alfred_messages`
|
||
|
|
- **Name**: "Alfred Messages"
|
||
|
|
- **Importance**: Default (makes sound + shows on lock screen)
|
||
|
|
- **Vibration**: Enabled
|
||
|
|
- **Lights**: Enabled
|
||
|
|
|
||
|
|
### Notification Content
|
||
|
|
- **Title**: "Alfred"
|
||
|
|
- **Message**: Full text of Alfred's response
|
||
|
|
- **Style**: BigTextStyle (expands to show full message)
|
||
|
|
- **Action**: Tap to open app
|
||
|
|
- **Auto-cancel**: Yes (dismisses after tap)
|
||
|
|
|
||
|
|
### Background Detection
|
||
|
|
Uses Android lifecycle observers to track when app moves to background:
|
||
|
|
- `ON_RESUME` → Foreground (no notifications)
|
||
|
|
- `ON_PAUSE` → Background (send notifications)
|
||
|
|
|
||
|
|
### Implementation
|
||
|
|
- **NotificationHelper.kt**: Manages notification channel and sending
|
||
|
|
- **MainActivity.kt**: Initializes notification channel on startup
|
||
|
|
- **MainScreen.kt**: Tracks foreground/background state, sends notifications
|
||
|
|
|
||
|
|
## Privacy
|
||
|
|
|
||
|
|
- Notifications only appear on your device
|
||
|
|
- No data sent to external services
|
||
|
|
- Same privacy as in-app messages
|
||
|
|
|
||
|
|
## Future Enhancements
|
||
|
|
|
||
|
|
Potential improvements:
|
||
|
|
- [ ] Notification actions (reply directly, dismiss, etc.)
|
||
|
|
- [ ] Group conversations into single notification
|
||
|
|
- [ ] Custom notification sounds
|
||
|
|
- [ ] Notification priority/importance settings
|
||
|
|
- [ ] Do Not Disturb integration
|
||
|
|
- [ ] Notification history/log
|
||
|
|
|
||
|
|
## Related Files
|
||
|
|
|
||
|
|
- **Notification logic**: `app/src/main/java/com/openclaw/alfred/notifications/NotificationHelper.kt`
|
||
|
|
- **Channel setup**: `app/src/main/java/com/openclaw/alfred/MainActivity.kt`
|
||
|
|
- **Background detection**: `app/src/main/java/com/openclaw/alfred/ui/screens/MainScreen.kt`
|
||
|
|
- **Permissions**: `app/src/main/AndroidManifest.xml`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Stay connected with Alfred, even when multitasking!** 🔔
|