CoreMotion授权问题

时间:2016-01-17 02:19:12

标签: swift swift2 authorization core-motion health-kit

我目前正在开发一个应用程序,它将使用三个库的组合: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!
            }
        }

}

令人困惑的部分是这个功能还在另一个裸机应用程序上进行了测试,并且在同一设备上正常工作(即显示允许“运动与健身”的对话框)。所有相关的系统设置都按预期配置,其他计步器\ cm应用程序将起作用。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我在一周内遇到了这个问题。即使在第一次启动应用程序时,对话框也没有出现......有了这个错误105。 对我来说,这是由于我的info.plist,以某种方式删除我的应用程序包名称...所以请确保你在那个名称中有正确的名称;)