2010-07-05 20 views
11

मैं कैसे पता लगा सकता हूं कि कोई उपयोगकर्ता आईफोन 4 या 3 जी/3 जीएस पर एप्लिकेशन चला रहा है या नहीं?आईफोन - मैं आईफोन संस्करण का पता कैसे लगा सकता हूं?

मुझे हार्डवेयर का पता लगाने की आवश्यकता है, आईओएस संस्करण नहीं।

किसी भी मदद के लिए धन्यवाद।

+0

आप [currentDevice] कॉल कर सकते हैं (http://developer.apple.com/iphone/library/documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/doc/uid/TP40006902 -CH3-SW10) UIDevice पर और मॉडल संपत्ति को देखो। ** संपादित करें: ** हालांकि ... दस्तावेज़ों का सुझाव है कि इसमें सटीक मॉडल संख्या शामिल नहीं है। –

उत्तर

11

इस वर्ग का उपयोग करने के लिए स्वतंत्र महसूस - मैंने पाया यह here

प्रयोग

UIDeviceHardware *h=[[UIDeviceHardware alloc] init]; 
[self setDeviceModel:[h platformString]]; 
[h release]; 

UIDeviceHardware.h

// 
// UIDeviceHardware.h 
// 
// Used to determine EXACT version of device software is running on. 

#import <Foundation/Foundation.h> 

@interface UIDeviceHardware : NSObject 

- (NSString *) platform; 
- (NSString *) platformString; 

@end 

UIDeviceHardware.m

// 
// UIDeviceHardware.m 
// 
// Used to determine EXACT version of device software is running on. 

#import "UIDeviceHardware.h" 
#include <sys/types.h> 
#include <sys/sysctl.h> 

@implementation UIDeviceHardware 

- (NSString *) platform{ 
    size_t size; 
    sysctlbyname("hw.machine", NULL, &size, NULL, 0); 
    char *machine = malloc(size); 
    sysctlbyname("hw.machine", machine, &size, NULL, 0); 
    NSString *platform = [NSString stringWithCString:machine]; 
    free(machine); 
    return platform; 
} 

- (NSString *) platformString{ 
    NSString *platform = [self platform]; 
    if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G"; 
    if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G"; 
    if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS"; 
    if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G"; 
    if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G"; 
    if ([platform isEqualToString:@"i386"]) return @"iPhone Simulator"; 
    return platform; 
} 

@end 
+1

मेरे उत्तर से काफी बेहतर है, लेकिन किसी को इसे आईफोन 4 पर चलाने की ज़रूरत है और देखें कि उस मॉडल के लिए मशीन स्ट्रिंग क्या है। मुझे लगता है कि यह "iPhone3,1" हो सकता है। –

+0

+1 अच्छा बिंदु। मैं अब बहुत थक गया हूं, लेकिन मैं कल कोशिश करूँगा और परिणाम पोस्ट करूंगा - जब तक कि कोई मुझे इसे मारता है – SeniorShizzle

+0

मैं सिर्फ hw.machine (और hw.model) का उपयोग करता हूं। आईफोन 1,1 को "मूल आईफोन" या "आईफोन 2 जी" (अनौपचारिक) के रूप में भी जाना जाता है और ऐप्पल "आईपॉड टच 2 पीढ़ी" और "आईपॉड टच 3 पीढ़ी" सूचीबद्ध करता है, जिनमें से एक यहां गायब है (संभवतः आईपॉड 2,2) –

6
#import <sys/utsname.h> 

+ (NSString*)deviceModelName { 

     struct utsname systemInfo; 

     uname(&systemInfo); 

     NSString *modelName = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; 

     if([modelName isEqualToString:@"i386"]) { 
      modelName = @"iPhone Simulator"; 
     } 
     else if([modelName isEqualToString:@"iPhone1,1"]) { 
      modelName = @"iPhone"; 
     } 
     else if([modelName isEqualToString:@"iPhone1,2"]) { 
      modelName = @"iPhone 3G"; 
     } 
     else if([modelName isEqualToString:@"iPhone2,1"]) { 
      modelName = @"iPhone 3GS"; 
     } 
     else if([modelName isEqualToString:@"iPhone3,1"]) { 
      modelName = @"iPhone 4"; 
     } 
     else if([modelName isEqualToString:@"iPhone4,1"]) { 
      modelName = @"iPhone 4S"; 
     } 
     else if([modelName isEqualToString:@"iPod1,1"]) { 
      modelName = @"iPod 1st Gen"; 
     } 
     else if([modelName isEqualToString:@"iPod2,1"]) { 
      modelName = @"iPod 2nd Gen"; 
     } 
     else if([modelName isEqualToString:@"iPod3,1"]) { 
      modelName = @"iPod 3rd Gen"; 
     } 
     else if([modelName isEqualToString:@"iPad1,1"]) { 
      modelName = @"iPad"; 
     } 
     else if([modelName isEqualToString:@"iPad2,1"]) { 
      modelName = @"iPad 2(WiFi)"; 
     } 
     else if([modelName isEqualToString:@"iPad2,2"]) { 
      modelName = @"iPad 2(GSM)"; 
     } 
     else if([modelName isEqualToString:@"iPad2,3"]) { 
      modelName = @"iPad 2(CDMA)"; 
     } 

     return modelName; 
    } 
+0

आपके कोड में आईफोन 5 – SpaceDog

+0

गुम है ... आखिरी 'अगर अन्य' के बाद आप अन्य {modelName = @ "iPhone 5" जोड़ सकते हैं;} –

+1

'if'' के बिना 'if'' का उपयोग न करें आईफोन 5. किसी भी अज्ञात डिवाइस को आईफोन 5 के रूप में गलत तरीके से फॉलबैक कर दिया जाएगा। – kirb

1

आप आईफोन ओएस संस्करण का पता लगाने के लिए इस कोड का उपयोग कर सकते हैं। फ्लोट संस्करण = [[[UIDevice currentDevice] systemVersion] floatValue];

if (version >= 3.0) { 
    // Only executes on version 3 or above. 
} 
संबंधित मुद्दे

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