feat(health): 统一使用共享的HealthKit权限初始化方法并简化配置

将sleepHealthKit模块中的HealthKit权限初始化逻辑替换为使用health工具中的通用ensureHealthPermissions方法,移除重复的权限配置代码。同时更新后台任务标识符以保持一致性。
This commit is contained in:
richarjiang
2025-09-12 15:54:33 +08:00
parent 1b76cc305a
commit edac180dd6
4 changed files with 19 additions and 48 deletions

View File

@@ -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<boolean> => {
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<CompleteSleepD
try {
console.log('[Sleep] 开始获取完整睡眠数据...', dayjs(date).format('YYYY-MM-DD'));
// 确保 HealthKit 已初始化
await initializeHealthKit();
await ensureHealthPermissions()
// 获取睡眠样本
const sleepSamples = await fetchSleepSamples(date);