feat: 优化后台任务管理,添加系统权限和用户偏好的完整检查,增强通知功能
This commit is contained in:
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user