feat: 移除目标管理演示页面并优化相关组件
- 删除目标管理演示页面的代码,简化项目结构 - 更新底部导航,移除目标管理演示页面的路由 - 调整相关组件的样式和逻辑,确保界面一致性 - 优化颜色常量的使用,提升视觉效果
This commit is contained in:
@@ -11,6 +11,8 @@ const PERMISSIONS: HealthKitPermissions = {
|
||||
AppleHealthKit.Constants.Permissions.SleepAnalysis,
|
||||
AppleHealthKit.Constants.Permissions.HeartRateVariability,
|
||||
AppleHealthKit.Constants.Permissions.ActivitySummary,
|
||||
AppleHealthKit.Constants.Permissions.OxygenSaturation,
|
||||
AppleHealthKit.Constants.Permissions.HeartRate,
|
||||
],
|
||||
write: [
|
||||
// 支持体重写入
|
||||
@@ -32,6 +34,9 @@ export type TodayHealthData = {
|
||||
exerciseMinutesGoal: number;
|
||||
standHours: number;
|
||||
standHoursGoal: number;
|
||||
// 新增血氧饱和度和心率数据
|
||||
oxygenSaturation: number | null;
|
||||
heartRate: number | null;
|
||||
};
|
||||
|
||||
export async function ensureHealthPermissions(): Promise<boolean> {
|
||||
@@ -74,8 +79,8 @@ export async function fetchHealthDataForDate(date: Date): Promise<TodayHealthDat
|
||||
|
||||
console.log('查询选项:', options);
|
||||
|
||||
// 并行获取所有健康数据,包括ActivitySummary
|
||||
const [steps, calories, basalMetabolism, sleepDuration, hrv, activitySummary] = await Promise.all([
|
||||
// 并行获取所有健康数据,包括ActivitySummary、血氧饱和度和心率
|
||||
const [steps, calories, basalMetabolism, sleepDuration, hrv, activitySummary, oxygenSaturation, heartRate] = await Promise.all([
|
||||
// 获取步数
|
||||
new Promise<number>((resolve) => {
|
||||
AppleHealthKit.getStepCount({
|
||||
@@ -198,10 +203,68 @@ export async function fetchHealthDataForDate(date: Date): Promise<TodayHealthDat
|
||||
resolve(results[0]);
|
||||
},
|
||||
);
|
||||
}),
|
||||
|
||||
// 获取血氧饱和度数据
|
||||
new Promise<number | null>((resolve) => {
|
||||
AppleHealthKit.getOxygenSaturationSamples(options, (err, res) => {
|
||||
if (err) {
|
||||
console.error('获取血氧饱和度失败:', err);
|
||||
return resolve(null);
|
||||
}
|
||||
if (!res || !Array.isArray(res) || res.length === 0) {
|
||||
console.warn('血氧饱和度数据为空或格式错误');
|
||||
return resolve(null);
|
||||
}
|
||||
console.log('血氧饱和度数据:', res);
|
||||
// 获取最新的血氧饱和度值
|
||||
const latestOxygen = res[res.length - 1];
|
||||
if (latestOxygen && latestOxygen.value !== undefined && latestOxygen.value !== null) {
|
||||
// 血氧饱和度通常在0-100之间,验证数据有效性
|
||||
const value = Number(latestOxygen.value);
|
||||
if (value >= 0 && value <= 100) {
|
||||
resolve(Number(value.toFixed(1)));
|
||||
} else {
|
||||
console.warn('血氧饱和度数据异常:', value);
|
||||
resolve(null);
|
||||
}
|
||||
} else {
|
||||
resolve(null);
|
||||
}
|
||||
});
|
||||
}),
|
||||
|
||||
// 获取心率数据
|
||||
new Promise<number | null>((resolve) => {
|
||||
AppleHealthKit.getHeartRateSamples(options, (err, res) => {
|
||||
if (err) {
|
||||
console.error('获取心率失败:', err);
|
||||
return resolve(null);
|
||||
}
|
||||
if (!res || !Array.isArray(res) || res.length === 0) {
|
||||
console.warn('心率数据为空或格式错误');
|
||||
return resolve(null);
|
||||
}
|
||||
console.log('心率数据:', res);
|
||||
// 获取最新的心率值
|
||||
const latestHeartRate = res[res.length - 1];
|
||||
if (latestHeartRate && latestHeartRate.value !== undefined && latestHeartRate.value !== null) {
|
||||
// 心率通常在30-200之间,验证数据有效性
|
||||
const value = Number(latestHeartRate.value);
|
||||
if (value >= 30 && value <= 200) {
|
||||
resolve(Math.round(value));
|
||||
} else {
|
||||
console.warn('心率数据异常:', value);
|
||||
resolve(null);
|
||||
}
|
||||
} else {
|
||||
resolve(null);
|
||||
}
|
||||
});
|
||||
})
|
||||
]);
|
||||
|
||||
console.log('指定日期健康数据获取完成:', { steps, calories, basalMetabolism, sleepDuration, hrv, activitySummary });
|
||||
console.log('指定日期健康数据获取完成:', { steps, calories, basalMetabolism, sleepDuration, hrv, activitySummary, oxygenSaturation, heartRate });
|
||||
|
||||
return {
|
||||
steps,
|
||||
@@ -215,7 +278,10 @@ export async function fetchHealthDataForDate(date: Date): Promise<TodayHealthDat
|
||||
exerciseMinutes: activitySummary?.appleExerciseTime || 0,
|
||||
exerciseMinutesGoal: activitySummary?.appleExerciseTimeGoal || 30,
|
||||
standHours: activitySummary?.appleStandHours || 0,
|
||||
standHoursGoal: activitySummary?.appleStandHoursGoal || 12
|
||||
standHoursGoal: activitySummary?.appleStandHoursGoal || 12,
|
||||
// 血氧饱和度和心率数据
|
||||
oxygenSaturation,
|
||||
heartRate
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user