我正在尝试使用iOS 8.1.2对iPhone 6上的计步器缓存进行查询,我使用的是
Objective-c,我已经导入了CoreMotion框架,并将其包含在项目中,代码看起来像这样
NSDate *startDate = [[NSDate date] dateByAddingTimeInterval:-60*60*12]; NSDate *endDate = [NSDate date]; CMPedometer *pedo = [[CMPedometer alloc]init]; [pedo queryPedometerDataFromDate:startDate toDate:endDate withHandler:^(CMPedometerData *pedometerData,NSError *error) { if (error) { NSLog(@"error: %@",error); } }];
这给了我错误:错误域= CMErrorDomain代码= 103“操作无法完成.(CMErrorDomain错误103.)”
如果我在这样的Swift中做同样的事情
var dateString = "2014-12-15" var dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "YYYY-MM-DD" var startDate = dateFormatter.dateFromString(dateString) var endDate = NSDate() pedometer.queryPedometerDataFromDate(startDate,toDate: endDate){ (data,error) -> Void in if error != nil { println("There was an error requesting data from the pedometer: \(error)") } else { println(data) } }
我得到了计步器数据,没有错误.
在这两种情况下,我接受弹出窗口告诉我接受跟踪体力活动.
我已经仔细检查了该应用程序是否具有匿名设置下的物理活动数据的读取权限.
谁能解释我做错了什么?
解决方法
您应该将CMPedometer变量保存为类的属性,而不是Local变量.然后它会工作.