2013-09-24 47 views
7

試圖找到一種方法來檢測M7的存在。如何檢測M7是否存在,又如iPhone 5S或更新?

如果M7不存在,查詢CMStepCounter或CMMotionActivity類沒有意義嗎?我的猜測是,在iOS7的非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"]) { 

} 
+0

對於非M7模型(除5S以外的任何模型),這些類似乎沒有獲取數據。他們需要M7芯片。檢查isStepCountingAvailable或isActivityAvailable如下似乎工作。 – Jackson

回答

17

使用蘋果提供的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類中。

+2

其實,你不需要明確檢查類。如果您使用的是iOS 6或之前的版本,則由於CMStepCounter將爲零,因此[CMStepCounter isStepCountingAvailable]將返回false。 ([CMMotionActivityManager isActivityAvailable]也一樣) – clarkcox3

+1

CMStepCounter在iOS 8中已被棄用.Codeed計數器用於替代。 [CMPedometer isStepCountingAvailable]與其前身相同。類參考:https://developer.apple.com/library/prerelease/ios/documentation/CoreMotion/Reference/CMPedometer_class/index.html –

相關問題