feat: 支持 healthkit

This commit is contained in:
richarjiang
2025-09-17 18:05:11 +08:00
parent 63ed820e93
commit 6b7776e51d
15 changed files with 1675 additions and 532 deletions

View File

@@ -16,6 +16,7 @@ import { WaterRecordSource } from '@/services/waterRecords';
import { store } from '@/store';
import { rehydrateUserSync, setPrivacyAgreed } from '@/store/userSlice';
import { createWaterRecordAction } from '@/store/waterSlice';
import { ensureHealthPermissions } from '@/utils/health';
import { DailySummaryNotificationHelpers, MoodNotificationHelpers, NutritionNotificationHelpers } from '@/utils/notificationHelpers';
import { clearPendingWaterRecords, syncPendingWidgetChanges } from '@/utils/widgetDataSync';
import React from 'react';
@@ -41,9 +42,20 @@ function Bootstrapper({ children }: { children: React.ReactNode }) {
await dispatch(rehydrateUserSync());
setUserDataLoaded(true);
};
const initHealthPermissions = async () => {
// 初始化 HealthKit 权限
try {
console.log('开始请求 HealthKit 权限...');
await ensureHealthPermissions();
console.log('HealthKit 权限初始化完成');
} catch (error) {
console.warn('HealthKit 权限初始化失败,可能在模拟器上运行:', error);
}
}
const initializeNotifications = async () => {
try {
await BackgroundTaskManager.getInstance().initialize();
// 初始化通知服务
await notificationService.initialize();
@@ -102,6 +114,7 @@ function Bootstrapper({ children }: { children: React.ReactNode }) {
};
loadUserData();
initHealthPermissions();
initializeNotifications();
// 冷启动时清空 AI 教练会话缓存
clearAiCoachSessionCache();