代码之家  ›  专栏  ›  技术社区  ›  lewis

watchOS 5:HKLiveWorkoutBuilder、HKWorkoutRouteBuilder和训练距离

  •  7
  • lewis  · 技术社区  · 6 年前

    我正在使用 HKLiveWorkoutBuilder & HKWorkoutRouteBuilder 在Apple Watch上追踪训练。

    呼叫时:

    [workoutBuilder finishWorkoutWithCompletion:^(HKWorkout * _Nullable workout, NSError * _Nullable error) {
    
    }];
    

    workout 对象不包括用户行驶的距离:

    (lldb) po workout.totalDistance
    nil
    

    鉴于此 .totalDistance 是只读的,如何在watchOS 5中设置训练距离?

    enter image description here

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  3
  •   lewis    5 年前

    答案有两部分。

    走路还是跑步

    workoutBuilder?.beginCollection(withStart: Date(), completion: { (success, error) in
        guard success == true else {
            #warning ("deal with failure")
            return
        }
    
        workoutBuilder?.dataSource = HKLiveWorkoutDataSource(healthStore:self.healthStore, workoutConfiguration: self.workoutConfig)
    
        // 👇👇 this is the important bit 👇👇
        workoutBuilder?.dataSource?.enableCollection(for: HKQuantityType.quantityType(forIdentifier: .distanceWalkingRunning)!, predicate: nil)
    
        workoutBuilder?.dataSource?.enableCollection(for: HKQuantityType.quantityType(forIdentifier: .heartRate)!, predicate: nil)
        workoutBuilder?.dataSource?.enableCollection(for: HKQuantityType.quantityType(forIdentifier: .activeEnergyBurned)!, predicate: nil)
    
    })
    

    你可以把它改装成游泳和滑雪。

    目前还没有办法使用健身器,以获得其他类型的户外活动距离,如划船。

    --

    雷达/反馈详细信息,用于是否要复制和粘贴

    反馈编号: FB5714600型

    支持更多运动类型的距离跟踪

    正文:

    -滑雪

    我有两个选择。最好允许这样的事情:

    workoutBuilder?.dataSource?.enableCollection(for: HKQuantityType.quantityType(forIdentifier: .distancePaddling)!, predicate: nil)
    

    另一个选择是允许训练是可变的,这样可以追溯增加距离。

    推荐文章