1. tips: determinare se stiamo utilizzando un iPod, un iPhone o un iPad via SDK

    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



    il tuo nome:


    dimmi cosa ne pensi:



Matteo Crippa Milano, Italy matteo crippa Mi occupo principalmente di Web Analytics e Online Marketing, ma non disdegno sviluppare applicazioni web (principalmente in PHP) e mobile, in particolare per iPhone, iPad e dispositivi basati su tecnologia Android.