首页 > 解决方案 > 个别 iPhone 和 Apple Watch 型号支持哪些特定于设备的 CMPedometer 功能?

问题描述

我有兴趣了解CMPedometer哪些 iPhone 型号支持哪些 Core Motion - Pedometer ( ) 功能。

具体来说,我对bool以下属性的值感兴趣:

isCadenceAvailable()
isStepCountingAvailable()
isPaceAvailable()
isDistanceAvailable()
isPedometerEventTrackingAvailable()
isFloorCountingAvailable()

我可以使用 iPhone SE 和 5s。在这些模型上,我得到了以下回复:

5s

isCadenceAvailable: false
isStepCountingAvailable: true
isPaceAvailable: false
isDistanceAvailable: true
isPedometerEventTrackingAvailable: false
isFloorCountingAvailable: false

东南

isCadenceAvailable: true
isStepCountingAvailable: true
isPaceAvailable: true
isDistanceAvailable: true
isPedometerEventTrackingAvailable: true
isFloorCountingAvailable: false

如果其他成员可以提交其他 iPhone 型号的信息,我会很高兴:6、6s、7、8、X、XR、XS、XS Max。我相信 XR、XS 和 XS Max 会提供相同的结果,8 和 X 也应该如此。


此外,也欢迎 Apple Watch 型号的类似结果。这是数据

S0

isCadenceAvailable: true
isStepCountingAvailable: true
isPaceAvailable: true
isDistanceAvailable: true
isPedometerEventTrackingAvailable: true
isFloorCountingAvailable: false

这是打印出来的代码:

iOS

import UIKit
import CoreMotion

class ViewController: UIViewController {

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        print("isCadenceAvailable: \(CMPedometer.isCadenceAvailable())")
        print("isStepCountingAvailable: \(CMPedometer.isStepCountingAvailable())")
        print("isPaceAvailable: \(CMPedometer.isPaceAvailable())")
        print("isDistanceAvailable: \(CMPedometer.isDistanceAvailable())")
        print("isPedometerEventTrackingAvailable: \(CMPedometer.isPedometerEventTrackingAvailable())")
        print("isFloorCountingAvailable: \(CMPedometer.isFloorCountingAvailable())")
    }
}

手表操作系统

import WatchKit
import Foundation
import CoreMotion

class InterfaceController: WKInterfaceController {
    @IBOutlet var boolLabel: WKInterfaceLabel!

    override func willActivate() {
        super.willActivate()
        let b1 = CMPedometer.isDistanceAvailable() ? "Y" : "N"
        let b2 = CMPedometer.isStepCountingAvailable() ? "Y" : "N"
        let b3 = CMPedometer.isCadenceAvailable() ? "Y" : "N"
        let b4 = CMPedometer.isPaceAvailable() ? "Y" : "N"
        let b5 = CMPedometer.isPedometerEventTrackingAvailable() ? "Y" : "N"
        let b6 = CMPedometer.isFloorCountingAvailable() ? "Y" : "N"
        let str = b1 + b2 + b3 + b4 + b5 + b6

        boolLabel.setText(str)
    }
}

这个问题是关于其他 iPhone 和手表型号的信息。不幸的是,通过模拟器检查这一点会为所有布尔值生成 false。随意复制粘贴上述代码并在您的设备上运行以提供答案。

标签: iosiphoneapple-watch

解决方案


我一直在问自己一个类似的问题,因此准备了一个包含一个简单项目的 repo,以帮助跟踪功能的可用性。

https://github.com/reggian/availability

我会逐渐填补缺失的数据,并添加在不同硬件上具有不同可用性的其他框架。

请随时贡献。


推荐阅读