
IOS
import WatchConnectivityclass ViewController: UIViewController, WCSessionDelegate { var session: WCSession? override func viewDidLoad() { super.viewDidLoad() if WCSession.isSupported() { session = WCSession.default session?.delegate = self session?.activate() } } // 实现 WCSessionDelegate 方法,接收来自 Apple Watch 的心率数据 func session(_ session: WCSession, didReceiveMessage message: [String : Any]) { if let heartRate = message["heartRate"] as? Int { // 更新心率数据到 UI DispatchQueue.mAIn.async { self.heartRateLabel.text = "\(heartRate) bpm" } } }}在 WatchKit Extension 中的 InterfaceController 类中添加以下代码:import HealthKitimport WatchConnectivityclass InterfaceController: WKInterfaceController { var healthStore = HKHealthStore() var session: WCSession? override func willActivate() { super.willActivate() if WCSession.isSupported() { session = WCSession.default session?.activate() } // 请求读取心率数据的权限 healthStore.requestAuthorization(toShare: nil, read: [HKQuantityType.quantityType(forIdentifier: .heartRate)!]) { (success, error) in if success { // 查询心率数据 let heartRateType = HKQuantityType.quantityType(forIdentifier: .heartRate)! let heartRateQuery = HKSampleQuery(sampleType: heartRateType, predicate: nil, limit: HKObjectQueryNoLimit, sortDescriptors: nil) { (query, samples, error) in if let heartRateSamples = samples as? [HKQuantitySample] { if let heartRate = heartRateSamples.last?.quantity.doubleValue(for: HKUnit.count().unitDivided(by: .minute()))) { // 将心率数据发送到 IOS 应用 self.session?.sendMessage(["heartRate": heartRate], replyHandler: nil, errorHandler: nil) } } } self.healthStore.execute(heartRateQuery) } } }}通过以上代码示例,我们可以轻松地实现从 Apple Watch 获取心率数据并实时更新到 IOS 应用中的功能。这样,用户就可以方便地监测自己的心率变化,及时调整自己的健康状态。同时,开发者也可以根据心率数据提供更加个性化的健康管理服务,从而提升用户体验。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号