feat: 支持原生模块健康数据
This commit is contained in:
@@ -1,6 +1,4 @@
|
||||
import dayjs from 'dayjs';
|
||||
import type { HealthActivitySummary, HealthKitPermissions } from 'react-native-health';
|
||||
import AppleHealthKit from 'react-native-health';
|
||||
|
||||
type HealthDataOptions = {
|
||||
startDate: string;
|
||||
@@ -8,30 +6,30 @@ type HealthDataOptions = {
|
||||
};
|
||||
|
||||
|
||||
const PERMISSIONS: HealthKitPermissions = {
|
||||
permissions: {
|
||||
read: [
|
||||
AppleHealthKit.Constants.Permissions.StepCount,
|
||||
AppleHealthKit.Constants.Permissions.ActiveEnergyBurned,
|
||||
AppleHealthKit.Constants.Permissions.BasalEnergyBurned,
|
||||
AppleHealthKit.Constants.Permissions.SleepAnalysis,
|
||||
AppleHealthKit.Constants.Permissions.HeartRateVariability,
|
||||
AppleHealthKit.Constants.Permissions.ActivitySummary,
|
||||
AppleHealthKit.Constants.Permissions.OxygenSaturation,
|
||||
AppleHealthKit.Constants.Permissions.HeartRate,
|
||||
AppleHealthKit.Constants.Permissions.Water,
|
||||
// 添加 Apple Exercise Time 和 Apple Stand Time 权限
|
||||
AppleHealthKit.Constants.Permissions.AppleExerciseTime,
|
||||
AppleHealthKit.Constants.Permissions.AppleStandTime,
|
||||
],
|
||||
write: [
|
||||
// 支持体重写入
|
||||
AppleHealthKit.Constants.Permissions.Weight,
|
||||
// 支持饮水量写入
|
||||
AppleHealthKit.Constants.Permissions.Water,
|
||||
],
|
||||
},
|
||||
};
|
||||
// const PERMISSIONS: HealthKitPermissions = {
|
||||
// permissions: {
|
||||
// read: [
|
||||
// AppleHealthKit.Constants.Permissions.StepCount,
|
||||
// AppleHealthKit.Constants.Permissions.ActiveEnergyBurned,
|
||||
// AppleHealthKit.Constants.Permissions.BasalEnergyBurned,
|
||||
// AppleHealthKit.Constants.Permissions.SleepAnalysis,
|
||||
// AppleHealthKit.Constants.Permissions.HeartRateVariability,
|
||||
// AppleHealthKit.Constants.Permissions.ActivitySummary,
|
||||
// AppleHealthKit.Constants.Permissions.OxygenSaturation,
|
||||
// AppleHealthKit.Constants.Permissions.HeartRate,
|
||||
// AppleHealthKit.Constants.Permissions.Water,
|
||||
// // 添加 Apple Exercise Time 和 Apple Stand Time 权限
|
||||
// AppleHealthKit.Constants.Permissions.AppleExerciseTime,
|
||||
// AppleHealthKit.Constants.Permissions.AppleStandTime,
|
||||
// ],
|
||||
// write: [
|
||||
// // 支持体重写入
|
||||
// AppleHealthKit.Constants.Permissions.Weight,
|
||||
// // 支持饮水量写入
|
||||
// AppleHealthKit.Constants.Permissions.Water,
|
||||
// ],
|
||||
// },
|
||||
// };
|
||||
|
||||
export type HourlyStepData = {
|
||||
hour: number; // 0-23
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* React Native TypeScript bindings for iOS HealthKit access
|
||||
*/
|
||||
|
||||
import { NativeModules } from 'react-native';
|
||||
import { requireNativeModule } from 'expo-modules-core';
|
||||
|
||||
export interface HealthKitPermissions {
|
||||
[key: string]: 'notDetermined' | 'denied' | 'authorized' | 'unknown';
|
||||
@@ -50,6 +50,12 @@ export interface HealthKitManagerInterface {
|
||||
*/
|
||||
requestAuthorization(): Promise<HealthKitAuthorizationResult>;
|
||||
|
||||
/**
|
||||
* Get current authorization status for HealthKit data types
|
||||
* This checks the current permission status without prompting the user
|
||||
*/
|
||||
getAuthorizationStatus(): Promise<HealthKitAuthorizationResult>;
|
||||
|
||||
/**
|
||||
* Get sleep analysis data from HealthKit
|
||||
* @param options Query options including date range and limit
|
||||
@@ -57,11 +63,8 @@ export interface HealthKitManagerInterface {
|
||||
getSleepData(options?: SleepDataOptions): Promise<SleepDataResult>;
|
||||
}
|
||||
|
||||
console.log('NativeModules', NativeModules);
|
||||
|
||||
|
||||
// Native module interface
|
||||
const HealthKitManager: HealthKitManagerInterface = NativeModules.HealthKitManager;
|
||||
const HealthKitManager: HealthKitManagerInterface = requireNativeModule('HealthKitManager');
|
||||
|
||||
export default HealthKitManager;
|
||||
|
||||
|
||||
@@ -374,7 +374,9 @@ export const fetchCompleteSleepData = async (date: Date): Promise<CompleteSleepD
|
||||
return null;
|
||||
}
|
||||
|
||||
await HealthKitManager.requestAuthorization()
|
||||
const res = await HealthKitManager.requestAuthorization()
|
||||
const status = await HealthKitManager.getAuthorizationStatus()
|
||||
console.log('status~~~', status);
|
||||
// await ensureHealthPermissions()
|
||||
// 获取睡眠样本
|
||||
const sleepSamples = await fetchSleepSamples(date);
|
||||
|
||||
Reference in New Issue
Block a user