diff --git a/ios/digitalpilates/Info.plist b/ios/digitalpilates/Info.plist index 0a598c6..8b361ac 100644 --- a/ios/digitalpilates/Info.plist +++ b/ios/digitalpilates/Info.plist @@ -4,7 +4,7 @@ BGTaskSchedulerPermittedIdentifiers - com.expo.modules.backgroundtask.processing + backgroundtask CADisableMinimumFrameDurationOnPhone diff --git a/services/backgroundTaskManager.ts b/services/backgroundTaskManager.ts index 6818035..294fc3e 100644 --- a/services/backgroundTaskManager.ts +++ b/services/backgroundTaskManager.ts @@ -6,7 +6,7 @@ import * as BackgroundTask from 'expo-background-task'; import * as TaskManager from 'expo-task-manager'; import { TaskManagerTaskBody } from 'expo-task-manager'; -export const BACKGROUND_TASK_IDENTIFIER = 'com.expo.modules.backgroundtask.processing'; +export const BACKGROUND_TASK_IDENTIFIER = 'backgroundtask'; diff --git a/utils/health.ts b/utils/health.ts index ce483ba..4b4ef4b 100644 --- a/utils/health.ts +++ b/utils/health.ts @@ -77,21 +77,21 @@ export async function ensureHealthPermissions(): Promise { console.log('开始初始化HealthKit...'); resolve(true) - // AppleHealthKit.initHealthKit(PERMISSIONS, (error) => { - // if (error) { - // console.error('HealthKit初始化失败:', error); - // // 常见错误处理 - // if (typeof error === 'string') { - // if (error.includes('not available')) { - // console.warn('HealthKit不可用 - 可能在模拟器上运行或非iOS设备'); - // } - // } - // resolve(false); - // return; - // } - // console.log('HealthKit初始化成功'); - // resolve(true); - // }); + AppleHealthKit.initHealthKit(PERMISSIONS, (error) => { + if (error) { + console.error('HealthKit初始化失败:', error); + // 常见错误处理 + if (typeof error === 'string') { + if (error.includes('not available')) { + console.warn('HealthKit不可用 - 可能在模拟器上运行或非iOS设备'); + } + } + resolve(false); + return; + } + console.log('HealthKit初始化成功'); + resolve(true); + }); }); } diff --git a/utils/sleepHealthKit.ts b/utils/sleepHealthKit.ts index 3c06cd1..06e8606 100644 --- a/utils/sleepHealthKit.ts +++ b/utils/sleepHealthKit.ts @@ -1,5 +1,6 @@ import dayjs from 'dayjs'; import HealthKit from 'react-native-health'; +import { ensureHealthPermissions } from './health'; // 睡眠阶段枚举 export enum SleepStage { @@ -59,34 +60,6 @@ export type CompleteSleepData = { recommendation: string; }; -// HealthKit 权限配置 -const permissions = { - permissions: { - read: [ - HealthKit.Constants.Permissions.SleepAnalysis, - HealthKit.Constants.Permissions.HeartRate, - ], - write: [], // 我们只读取数据,不写入 - }, -}; - -/** - * 初始化 HealthKit 权限 - */ -export const initializeHealthKit = (): Promise => { - return new Promise((resolve, reject) => { - HealthKit.initHealthKit(permissions, (error: string) => { - if (error) { - console.error('[HealthKit] 权限初始化失败:', error); - reject(new Error(error)); - } else { - console.log('[HealthKit] 权限初始化成功'); - resolve(true); - } - }); - }); -}; - /** * 创建睡眠日期范围 (从前一天 18:00 到当天 12:00) */ @@ -397,9 +370,7 @@ export const fetchCompleteSleepData = async (date: Date): Promise