- Add app-startup-recovery-solution.md with technical deep dive - Add boot-receiver-testing-guide.md with Android 10+ fixes - Add notification-testing-procedures.md with manual testing steps - Add reboot-testing-procedure.md with automated testing - Add reboot-testing-steps.md with quick reference guide - Add testing-quick-reference.md with common scenarios Documentation covers: - Boot receiver implementation and Direct Boot handling - App startup recovery as fallback mechanism - Comprehensive testing procedures for all scenarios - Troubleshooting guides for common issues - Performance metrics and success criteria - Production deployment best practices This provides complete documentation for the notification system including both boot receiver and app startup recovery approaches.
6.0 KiB
6.0 KiB
Reboot Testing Steps for DailyNotification Plugin
🎯 Objective
Test that scheduled notifications survive device reboots and are properly restored by the BootReceiver.
⏰ Extended Testing Time
- Notification Delay: 5 minutes (instead of 1 minute)
- More Realistic: Allows time for proper testing and verification
- Better for Reboot Testing: Gives time to reboot and verify recovery
🔄 Complete Reboot Testing Procedure
Step 1: Schedule Notification
# Launch app
adb shell am start -n com.timesafari.dailynotification/.MainActivity
- Tap "Test Notification" button
- Verify message: "Notification scheduled for [time]! Check your notification bar in 5 minutes."
- Note the scheduled time (5 minutes from now)
Step 2: Verify Initial Scheduling
# Check scheduled alarms
adb shell "dumpsys alarm | grep timesafari"
- Should show scheduled alarm with correct timestamp
- Note the alarm details
Step 3: Reboot Device
# Reboot device
adb reboot
- Wait 2-3 minutes for device to fully boot
- Wait for boot animation to complete
- Wait for home screen to appear
Step 4: Verify Boot Recovery
# Check recovery logs
adb logcat -d | grep -i "bootreceiver\|recovery"
Look for these log messages:
"Device boot completed - restoring notifications""Found X notifications to recover""Notification recovery completed: X/X recovered"
Step 5: Verify Alarm Restoration
# Check if alarm was restored
adb shell "dumpsys alarm | grep timesafari"
- Should show the same scheduled alarm as before reboot
- Alarm timestamp should match original schedule
Step 6: Wait for Notification
- Wait for the originally scheduled time (5 minutes from when you scheduled it)
- Check notification panel for the test notification
- Verify notification appears with correct content
🧪 Automated Reboot Test
Run the Reboot Test Script:
# Run automated reboot test
./scripts/reboot-test.sh
What the script does:
- ✅ Checks boot receiver registration
- 📅 Prompts you to schedule notification
- 🔍 Verifies initial scheduling
- 🔄 Reboots device automatically
- ⏳ Waits for boot completion
- 🔍 Checks recovery logs
- ⏰ Verifies alarm restoration
- 🎉 Reports success/failure
🔍 Key Log Messages to Look For
Successful Recovery:
BootReceiver: Device boot completed - restoring notifications
BootReceiver: Found X notifications to recover
BootReceiver: Recovered notification: [notification-id]
BootReceiver: Notification recovery completed: X/X recovered
Recovery Issues:
BootReceiver: No notifications to recover
BootReceiver: Failed to recover notification: [notification-id]
BootReceiver: Error during boot recovery
🚨 Troubleshooting Reboot Recovery
Issue 1: Boot Receiver Not Triggered
Symptoms: No recovery logs after reboot Solutions:
# Check boot receiver registration
adb shell "dumpsys package com.timesafari.dailynotification | grep -A10 -B10 receiver"
# Check BOOT_COMPLETED permission
adb shell "dumpsys package com.timesafari.dailynotification | grep permission"
Issue 2: Recovery Fails
Symptoms: Recovery logs show errors Solutions:
# Check notification storage
adb shell "run-as com.timesafari.dailynotification ls -la /data/data/com.timesafari.dailynotification/shared_prefs/"
# Check alarm permissions
adb shell "dumpsys alarm | grep SCHEDULE_EXACT_ALARM"
Issue 3: Alarms Not Restored
Symptoms: No alarms after recovery Solutions:
# Check exact alarm permissions
adb shell "dumpsys alarm | grep SCHEDULE_EXACT_ALARM"
# Check battery optimization
adb shell "dumpsys deviceidle | grep timesafari"
📊 Success Criteria
✅ Test Passes When:
- Boot receiver is triggered after reboot
- Recovery logs show successful restoration
- Alarms are rescheduled correctly
- Notification appears at the originally scheduled time
- All recovery log messages are present
❌ Test Fails When:
- Boot receiver is not triggered
- Recovery fails with errors
- Alarms are not restored
- Notification doesn't appear
- Recovery logs show failures
🎯 Quick Test Commands
One-Line Reboot Test:
# Schedule notification, reboot, and verify
adb shell am start -n com.timesafari.dailynotification/.MainActivity && echo "Schedule notification, then:" && read -p "Press Enter to reboot..." && adb reboot && sleep 120 && adb logcat -d | grep -i "bootreceiver\|recovery"
Check Recovery Status:
# Quick recovery check
adb logcat -d | grep -i "bootreceiver" | tail -10
Verify Alarms:
# Quick alarm check
adb shell "dumpsys alarm | grep timesafari"
🔧 Advanced Testing
Test Multiple Reboots:
# Test multiple reboot cycles
for i in {1..3}; do
echo "Reboot test $i/3"
./scripts/reboot-test.sh
sleep 60
done
Test with Different Notification Types:
- Test with sound enabled/disabled
- Test with different priorities
- Test with different content
- Test with multiple notifications
Test Edge Cases:
- Test with low battery
- Test with airplane mode
- Test with timezone changes
- Test with system updates
📱 Production Considerations
Real-World Scenarios:
- Users rarely force-stop apps
- Device reboots are common (updates, crashes, etc.)
- App updates should preserve notifications
- Battery optimization can affect recovery
Best Practices:
- Test on multiple Android versions
- Test on different OEMs
- Test with various battery optimization settings
- Test under different network conditions
🎉 Expected Results
After implementing the reboot recovery system:
- Notifications survive reboots ✅
- Boot receiver activates automatically ✅
- Recovery logs show success ✅
- Alarms are properly restored ✅
- Notifications appear at scheduled times ✅
The system is now robust and production-ready! 🚀