Получите информацию о ЧСС и шаговой доступности вместе с шагомером из приложения HealthKit для Apple Watch - PullRequest
0 голосов
/ 21 января 2020

Я делаю приложение Apple Watch для фитнеса, используя HealthKit framework. Это должно быть запущено в течение 6 минут.

Итак, я добавил NSTimer тоже. После того, как пользователь начал ходить, мне нужно сохранить эти данные, и для каждой секунды необходимо отображать BPM и расстояние в UILabel's.

. И я должен отправить всего 6 минут json данных на сервер.

Я пробовал ниже код

   var count = 0

  var countdownTimer: Timer!
 static let healthKitStore = HKHealthStore()

  static func authorizeHealthKit() {

    let healthKitTypes: Set = [
        HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.heartRate)!,
        HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.distanceWalkingRunning)!
    ]

    healthKitStore.requestAuthorization(toShare: healthKitTypes,
                                        read: healthKitTypes) { _, _ in }
  }

    static func saveMockHeartData() {

      // 1. Create a heart rate BPM Sample
        let heartRateType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.heartRate)!
        let heartRateQuantity = HKQuantity(unit: HKUnit(from: "count/min"),
        doubleValue: Double(arc4random_uniform(80) + 100))
      let heartSample = HKQuantitySample(type: heartRateType,
                                         quantity: heartRateQuantity, start: NSDate() as Date, end: NSDate() as Date)
  print("heartSample data is \(heartSample)")
      // 2. Save the sample in the store
        healthKitStore.save(heartSample, withCompletion: { (success, error) -> Void in
        if let error = error {
          print("Error saving heart sample: \(error.localizedDescription)")
        }
      })
    }




override func awake(withContext context: Any?) {
    super.awake(withContext: context)

    // Configure interface objects here.
        self.timerLabel.setTextColor(UIColor(red: 98.0/255, green: 224.0/255, blue: 258.0/255, alpha: 1.0))
   authorizeHealthKit()

}

override func willActivate() {
    // This method is called when watch view controller is about to be visible to user
    super.willActivate()
     countdownTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
}

@objc func updateTime() {
    count = count + 1
    if(count < 360) {
        timerLabel.setText(String(timeString(time: TimeInterval(count))))
    } else {
        print("Workout completed")
        countdownTimer.invalidate()
    }
    print("\(count)")
}

Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...