Как определить, работает ли приложение на iPhone 4 или 3G/3GS?
Мне нужно определить аппаратное обеспечение, а не версию iOS.
спасибо за любую помощь.
Как определить, работает ли приложение на iPhone 4 или 3G/3GS?
Мне нужно определить аппаратное обеспечение, а не версию iOS.
спасибо за любую помощь.
не стесняйтесь использовать этот класс - я нашел его здесь
Использование
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
#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;
}
Вы можете использовать этот код для обнаружения версии ОС для iPhone. float version = [[[UIDevice currentDevice] systemVersion] floatValue];
if (version >= 3.0) {
// Only executes on version 3 or above.
}