45 lines
1.4 KiB
Swift
45 lines
1.4 KiB
Swift
//
|
|
// HealthManager.swift
|
|
// anniversary_Project
|
|
//
|
|
// Created by 忆海16 on 2024/7/10.
|
|
//
|
|
|
|
import Foundation
|
|
import HealthKit
|
|
|
|
class HealthManager {
|
|
let healthStore = HKHealthStore()
|
|
|
|
func requestAuthorization(completion: @escaping (Bool, Error?) -> Void) {
|
|
guard HKHealthStore.isHealthDataAvailable() else {
|
|
completion(false, nil)
|
|
return
|
|
}
|
|
|
|
let waterType = HKObjectType.quantityType(forIdentifier: .dietaryWater)!
|
|
|
|
healthStore.requestAuthorization(toShare: [waterType], read: [waterType]) { (success, error) in
|
|
completion(success, error)
|
|
}
|
|
}
|
|
|
|
func saveWaterIntake(waterQuantity: Double, date: Date) {
|
|
guard let waterType = HKObjectType.quantityType(forIdentifier: .dietaryWater) else {
|
|
return
|
|
}
|
|
|
|
let waterQuantityUnit = HKUnit.liter()
|
|
let waterQuantitySample = HKQuantity(unit: waterQuantityUnit, doubleValue: waterQuantity)
|
|
let waterSample = HKQuantitySample(type: waterType, quantity: waterQuantitySample, start: date, end: date)
|
|
|
|
healthStore.save(waterSample) { (success, error) in
|
|
if success {
|
|
print("Successfully saved water intake to HealthKit")
|
|
} else if let error = error {
|
|
print("Error saving water intake to HealthKit: \(error.localizedDescription)")
|
|
}
|
|
}
|
|
}
|
|
}
|