feat(service): add foreground service for background message sync

Implement Android foreground service to keep app alive in background for real-time message sync:
- Add withForegroundService expo config plugin for notification channel setup
- Add BackgroundSyncManager with REALTIME, BATTERY_SAVER, and DISABLED modes
- Add ForegroundServiceModule for native Android foreground service binding
- Refactor backgroundService to integrate foreground service and expo-background-task

Also refactor auth and profile screens to use dynamic theme colors:
- Replace hardcoded THEME_COLORS with colors.primary.main, colors.background.paper, etc.
- Add useResolvedColorScheme for dynamic StatusBar styling
- Update NotificationSettingsScreen with sync mode selection UI

BREAKING CHANGE: Switched from expo-background-fetch to expo-background-task, minimum background sync interval changed from 900s to 15min in config
This commit is contained in:
lafay
2026-04-11 04:27:22 +08:00
parent 9bbed8cf5e
commit 6f84e17772
22 changed files with 1271 additions and 394 deletions

View File

@@ -2,7 +2,7 @@
"expo": {
"name": "萝卜社区",
"slug": "qojo",
"version": "1.0.12",
"version": "1.0.13",
"orientation": "default",
"icon": "./assets/icon.png",
"userInterfaceStyle": "automatic",
@@ -36,7 +36,7 @@
},
"predictiveBackGestureEnabled": false,
"package": "skin.carrot.bbs",
"versionCode": 6,
"versionCode": 7,
"permissions": [
"VIBRATE",
"RECORD_AUDIO",
@@ -63,6 +63,16 @@
},
"plugins": [
"./plugins/withMainActivityConfigChange",
[
"./plugins/withForegroundService",
{
"notificationTitle": "萝卜社区",
"notificationBody": "正在后台同步消息",
"notificationIcon": "ic_notification",
"channelId": "carrot_sync_foreground",
"channelName": "消息同步"
}
],
[
"expo-router",
{
@@ -86,9 +96,9 @@
}
],
[
"expo-background-fetch",
"expo-background-task",
{
"minimumInterval": 900
"minimumInterval": 15
}
],
[