7

试图找到一种方法来检测 M7 的存在。

如果 M7 不存在,查询 CMStepCounter 或 CMMotionActivity 类是否毫无意义?我的猜测是,在具有 iOS 7.0 的非 M7 型号上,这些类获取数据但效率不高且使用更多电池。

一个粗略的方法是:

struct utsname systemInfo;

uname(&systemInfo);

model =  [[NSString alloc] initWithCString:systemInfo.machine
                                      encoding:NSUTF8StringEncoding];

version =  [[NSString alloc] initWithString:[[UIDevice currentDevice] systemVersion]];


if ([model compare:@"iPhone6,1"]) {

}
4

1 回答 1

17

使用 Apple 提供的 API:

if ([CMStepCounter isStepCountingAvailable]) {
    // The device supports step counting
} else {
    // The device does not support step counting
}

if ([CMMotionActivityManager isActivityAvailable]) {
    // You can use CMMotionActivity
} else {
    // Nope, not supported
}

当然,此 API 仅适用于 iOS 7 或更高版本。因此,如果您需要支持 iOS 5 或 6,那么您也需要将此代码包装在CMStepCounter该类的检查中。

于 2013-09-24T01:39:00.873 回答