Ios 如何检测M7是否存在,也就是说它是iPhone 5S或更高版本?
试图找到一种检测M7是否存在的方法 如果M7不存在,查询CMStepCounter或CMMotionActivity类是否毫无意义?我的猜测是,在iOS 7.0的非M7机型上,这些类获取数据的效率并不高&使用的电池要多得多 一个粗略的方法是:Ios 如何检测M7是否存在,也就是说它是iPhone 5S或更高版本?,ios,sdk,core-motion,apple-m7,Ios,Sdk,Core Motion,Apple M7,试图找到一种检测M7是否存在的方法 如果M7不存在,查询CMStepCounter或CMMotionActivity类是否毫无意义?我的猜测是,在iOS 7.0的非M7机型上,这些类获取数据的效率并不高&使用的电池要多得多 一个粗略的方法是: struct utsname systemInfo; uname(&systemInfo); model = [[NSString alloc] initWithCString:systemInfo.machine
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"]) {
}
使用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或iOS 6,那么您也需要在检查
CMStepCounter
类时包装此代码。在非M7机型(5S除外)上,这些类似乎无法获取数据。他们需要M7芯片。按以下方式检查isStepCountingAvailable或isActivityAvailable似乎有效。实际上,不需要显式检查类。如果您使用的是iOS 6或更早版本,[CMStepCounter isStepCountingAvailable]将返回false,因为CMStepCounter将为零。(同样适用于[CMMotionActivityManager isActivityAvailable])CMStepCounter在iOS 8中被弃用。使用CMP计步器代替。[CMPedometer isStepCountingAvailable]的工作原理与其前身相同。课堂参考: