swift - CoreMotion授权问题

标签 swift swift2 authorization core-motion healthkit

我目前正在开发一个应用程序,它将使用三个库的组合:CoreLocation、CoreMotion 和 Healthkit。

我的问题是,当我初始化 CoreLocation 和 Healthkit 时,我得到允许授权的对话框。但是,使用 CoreMotion,我没有收到任何请求授权的对话框,只有错误“CMErrorDomain=105”(即访问被拒绝)。 “Motion & Fitness”的隐私设置不显示该应用程序的任何条目。该应用程序的隐私设置也不会显示与 Motion 相关的任何条目。我已多次删除我的测试设备以消除任何预先存在的设置。

使用 Swift 2.1 为 ios 9.2 构建的应用程序。在 5S 和 6S+ 上测试,结果相同(无授权对话框)

这是用于测试计步器是否可用以及我们是否可以收集数据(即允许)的代码。 “计步器”在类范围内声明。此功能(当前)附加到用户触发的按钮。

func checkCM() {
        pedometer.queryPedometerDataFromDate(NSDate(), toDate: NSDate()) {
            (data, error) -> Void in
            if error != nil {
               //error handler
               print(error?.description)

            } else {
                // no errors!
            }
        }

}

令人困惑的是,此功能还在另一个基本应用程序上进行了测试,并且在相同的设备上正常工作(即显示允许“Motion & Fitness”的对话框)。所有相关系统设置均按预期配置,其他计步器\cm 应用程序将正常工作。

所以问题是我的应用程序中的某些东西阻止了 CoreMotion 授权对话框的显示。是否存在与使用 CoreMotion 和授权相关的任何已知“陷阱”或问题?

最佳答案

我能想到的主要“陷阱”是确保您保留对 CMPedometer 对象的引用。如果不这样做,则不会调用 queryPedometerDataFromDate 方法,这意味着它可能不会显示您正在寻找的授权对话框。

关于swift - CoreMotion授权问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34834409/

相关文章:

ios - 来自拍摄的真实物体的 360 度可旋转物体

swift - 枚举 ChildNode WithName 的所有节点满足 if 语句

ios - SpriteKit : How can I get the pixel color from a point in SKSpriteNode?

ios - 如何使用 swift 在 subview 中添加标签栏和导航栏?

swift2 - 如何在函数之外使用 guard ?

python - 使用 python 驱动程序在 Neo4j 中进行授权(子图访问控制)

ios - 如何制作 UIPopoverController (Swift)?

ios - 尝试在 Xcode 7/Swift 2 中播放视频时出错

ruby-on-rails - 在 CanCan 中通过多项操作进行授权

session - Cake PHP 2.x Auth 数据仅在一个 Controller 中可用,而在其余 Controller 中为 null。知道为什么吗?