feat: 优化后台任务管理,添加系统权限和用户偏好的完整检查,增强通知功能

This commit is contained in:
richarjiang
2025-09-04 18:23:05 +08:00
parent 6c21c4b448
commit cb89ee7bc2
5 changed files with 217 additions and 108 deletions

View File

@@ -1,15 +1,15 @@
import { BackgroundTaskType as BackgroundTask, backgroundTaskManager, TaskStatusType as TaskStatus } from '@/services/backgroundTaskManager';
import * as BackgroundFetch from 'expo-background-fetch';
import { BackgroundTaskConfig, backgroundTaskManager, TaskStatus } from '@/services/backgroundTaskManager';
import * as BackgroundTask from 'expo-background-task';
import { useCallback, useEffect, useState } from 'react';
export interface UseBackgroundTasksReturn {
// 状态
isInitialized: boolean;
taskStatuses: TaskStatus[];
registeredTasks: BackgroundTask[];
registeredTasks: BackgroundTaskConfig[];
// 方法
registerTask: (task: BackgroundTask) => Promise<void>;
registerTask: (task: BackgroundTaskConfig) => Promise<void>;
unregisterTask: (taskId: string) => Promise<void>;
executeTask: (taskId: string, data?: any) => Promise<void>;
executeAllTasks: () => Promise<{ [taskId: string]: 'success' | 'failed' }>;
@@ -17,15 +17,15 @@ export interface UseBackgroundTasksReturn {
cleanupTaskStatuses: () => Promise<void>;
// 后台任务状态
backgroundTaskStatus: BackgroundFetch.BackgroundFetchStatus | null;
backgroundTaskStatus: BackgroundTask.BackgroundTaskStatus | null;
getBackgroundTaskStatus: () => Promise<void>;
}
export const useBackgroundTasks = (): UseBackgroundTasksReturn => {
const [isInitialized, setIsInitialized] = useState(false);
const [taskStatuses, setTaskStatuses] = useState<TaskStatus[]>([]);
const [registeredTasks, setRegisteredTasks] = useState<BackgroundTask[]>([]);
const [backgroundTaskStatus, setBackgroundTaskStatus] = useState<BackgroundFetch.BackgroundFetchStatus | null>(null);
const [registeredTasks, setRegisteredTasks] = useState<BackgroundTaskConfig[]>([]);
const [backgroundTaskStatus, setBackgroundTaskStatus] = useState<BackgroundTask.BackgroundTaskStatus | null>(null);
// 初始化
useEffect(() => {
@@ -49,7 +49,7 @@ export const useBackgroundTasks = (): UseBackgroundTasksReturn => {
}, []);
// 注册任务
const registerTask = useCallback(async (task: BackgroundTask) => {
const registerTask = useCallback(async (task: BackgroundTaskConfig) => {
await backgroundTaskManager.registerTask(task);
refreshData();
}, [refreshData]);