Ecco un altro snippet di codice che secondo me può tornare davvero utile se volete fornire un esperienza d'uso dedicata per ognuno dei 3 device di casa Apple.
A questo indirizzo trovate una classe dedicata a questa analisi del device.
Nel mio caso però ho preferito rivederla un attimo per avere come valori di ritorno delle stringe più leggibili come:
- iPod Touch 1G
- iPod Touch 2G
- iPhone 2G
- iPhone 3G
- iPhone 3Gs
- iPhone 4G
- iPad
e non dei testi tipo iPhone1,1 o iPhone2,1.
Per fare questo ho agito come segue aggiungendo il seguente snippet:
if([machine isEqualToString:@"iPhone2,1"])
return @"iPhone 3Gs";
else if([machine isEqualToString:@"iPhone3,1"])
return @"iPhone 4G";
else if([machine isEqualToString:@"iPhone1,1"])
return @"iPhone 2G";
else if([machine isEqualToString:@"iPhone1,2"])
return @"iPhone 3G";
else if([machine isEqualToString:@"iPod1,1"])
return @"iPod Touch 1G";
else if([machine isEqualToString:@"iPod2,1"])
return @"iPod Touch 2G";
else if([machine isEqualToString:@"i386"])
return @"Simulator";
else if([machine isEqualToString:@"iPad1,1"])
return @"iPad";
else
return @"unknown";
subito dopo la chiamata free(machine); andando così ad ottenere:
#import "UIDevice+machine.h"
#include
#include
@implementation UIDevice(machine)
- (NSString *)machine
{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *name = malloc(size);
sysctlbyname("hw.machine", name, &size, NULL, 0);
NSString *machine = [NSString stringWithCString:name encoding:NSUTF8StringEncoding];
free(name);
if([machine isEqualToString:@"iPhone2,1"])
return @"iPhone 3Gs";
else if([machine isEqualToString:@"iPhone3,1"])
return @"iPhone 4G";
else if([machine isEqualToString:@"iPhone1,1"])
return @"iPhone 2G";
else if([machine isEqualToString:@"iPhone1,2"])
return @"iPhone 3G";
else if([machine isEqualToString:@"iPod1,1"])
return @"iPod Touch 1G";
else if([machine isEqualToString:@"iPod2,1"])
return @"iPod Touch 2G";
else if([machine isEqualToString:@"i386"])
return @"Simulator";
else if([machine isEqualToString:@"iPad1,1"])
return @"iPad";
else
return @"unknown";
}
@end

