ios - iOS 11 以下检查 CMMotionActivityManager 的授权

标签 ios swift xcode authorization privacy

我编写了这段代码,用于检查 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/

相关文章:

ios - 在 Objective-C block 中修改全局变量

swift - OSX 菜单栏应用程序中的搜索/文本字段

swift - 从网址将视频加载到 View 时出现问题

ios - 刚刚升级到 Xcode 8.3,现在出现错误 : "Type GameScene has no member: updateCounting"

ios - Xcode7 swift2 - 双击 MKMapView 不工作

ios - 具有多个文本字段的 UiTableview 的 ScrollView 显示从一个文本字段到另一个文本字段的复制值

ios - 从 UITableViewCell 调用的 UIActivityViewController 显示不正确

ios - 在 Swift 中显示以前创建的 View Controller

xcode - 在 xcode 中保留包含路径

ios - Xcode iOS:如何找到一个音频文件(片段)在另一个音频文件中的位置?