2016-01-17 141 views
3

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

我的问题是,当我初始化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和授权相关的问题?

回答

0

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

1

我能想到的主要“疑难杂症”是确保您保留对CMPedometer对象的参考。如果你不这样做,queryPedometerDataFromDate方法将不会被调用,这意味着它可能不会显示你正在查找的授权对话框。