# 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!** 🔔