检查下方 CMMotionActivityManager 的权限 iOS 11

Check authorization of CMMotionActivityManager below iOS 11

我写了这段代码来检查 CMMotionActivityManager 的授权状态,以及用户是否允许我的应用程序访问它。

我很快发现这段代码确实有效,但只能在 iOS 11 之后。如您所见,我为 iOS 11 之前的版本留下了回退代码的 else 语句。有谁知道我如何为 iOS 11 以下的版本实现相同的过程,然后在 else 语句中使用该功能?我在网上找不到太多。

   private func checkAuthorizationStatus() {
        if #available(iOS 11.0, *) {
            switch CMMotionActivityManager.authorizationStatus() {
            case CMAuthorizationStatus.denied:
                onStop()
                // no authorization
            default:break
            }
        } else {
            // Fallback code for < iOS 11
        }
    }

感谢任何帮助。

iOS 11.

以下的 iOS 版本无法检查授权状态

对于 iOS 10 岁及以下,您可以简单地查询活动。当应用程序未被授权检索存储的运动数据时,您将收到一个特定的错误,您可以检查该错误:

// get last 10 days of activity
let endDate = Date()
let startDate = endDate.addingTimeInterval(-60 * 60 * 24 * 10)
let manager = CMMotionActivityManager()
manager.queryActivityStarting(from: startDate, to: endDate, to: .main) { (activities, error) in
    if let error = error, (error as NSError).code == CMErrorMotionActivityNotAuthorized.rawValue {
        // not autorized!
        return
    }
    // do something with the activities
}