如何检测M7是否存在,又称它是iPhone 5S还是更新?

Gam*_*int 7 sdk ios core-motion apple-m7

试图找到一种检测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"]) {

}
Run Code Online (Sandbox Code Playgroud)

rma*_*ddy 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
}
Run Code Online (Sandbox Code Playgroud)

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

  • 实际上,您不需要显式检查类.如果您使用的是iOS 6或之前,[CMStepCounter isStepCountingAvailable]将因CMStepCounter为零而返回false.([CMMotionActivityManager isActivityAvailable]也是如此) (2认同)