M7を検出する方法を見つけようとしています。M7が存在するかどうかを検出する方法、a.k.a iPhone 5S以降ですか?
M7が存在しない場合、CMStepCounterまたはCMMotionActivityクラスをクエリするのは意味がありませんか?私の推測では、iOS 7.0を搭載した非M7モデルでは、これらのクラスはデータを取得しますが、それほど効率的ではありません。&はもっとバッテリーを使います。
粗製の方法は次のようになります。このAPIは唯一のiOS 7以降である。もちろん、
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
}
:
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"]) {
}
M7以外のモデル(5S以外のモデル)では、これらのクラスはデータを取得していないようです。それらにはM7チップが必要です。 isStepCountingAvailableかisActivityAvailableのどちらかをチェックすると以下のように動作します。 – Jackson