2013-09-24 4 views
7

एम 7 मौजूद होने का पता लगाने का एक तरीका खोजने का प्रयास कर रहा है।यह पता लगाने के लिए कि क्या M7 मौजूद है, a.k.a यह एक आईफोन 5 एस या नया है?

क्या एम 7 मौजूद नहीं है तो सीएमएसटीप काउंटर या सीएममोशनएक्टिविटी क्लास से पूछताछ करना व्यर्थ है? मेरा अनुमान है कि आईओएस 7.0 वाले गैर एम 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 
} 

बेशक यह केवल API iOS 7 या बाद पर है:

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

गैर एम 7 मॉडल (5 एस के अलावा कुछ भी) पर उन वर्गों को डेटा नहीं लगता है। उन्हें एम 7 चिप की आवश्यकता होती है। या तो isStepCounting उपलब्ध है या isActivity उपलब्ध है नीचे जैसा लगता है काम करता है। – Jackson

उत्तर

17

एपीआई कि एप्पल प्रदान करता है का उपयोग करें। इसलिए यदि आपको आईओएस 5 या 6 का समर्थन करने की आवश्यकता है तो आपको CMStepCounter कक्षा के लिए भी इस कोड को चेक में लपेटने की आवश्यकता है।

+2

दरअसल, आपको कक्षाओं की स्पष्ट रूप से जांच करने की आवश्यकता नहीं है। यदि आप आईओएस 6 या उससे पहले हैं, तो [सीएमएसटीप काउंटर isStepCountingAvailable] इस तथ्य के आधार पर झूठी वापसी करेगा कि सीएमएसटीप काउंटर शून्य होगा। (यह वही है [CMMotionActivityManager isActivityAvailable]) – clarkcox3

+1

CMStepCounter को आईओएस 8 में बहिष्कृत किया गया था। इसके बजाय सीएमपीडोमीटर का उपयोग किया जाता है। [सीएमपीडोमीटर isStepCountingAvailable] अपने पूर्ववर्ती के समान काम करता है। कक्षा संदर्भ: https://developer.apple.com/library/prerelease/ios/documentation/CoreMotion/Reference/CMPedometer_class/index.html –

संबंधित मुद्दे