我编写了这段代码,用于检查 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
}
关于ios - iOS 11 以下检查 CMMotionActivityManager 的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53880032/