12
votes

iPhone - Comment détecter la version iPhone?

Comment puis-je détecter si un utilisateur exécute l'application sur un iPhone 4 ou 3G / 3GS?

Je dois détecter le matériel, pas la version iOS.

Merci pour une aide.


1 commentaires

Vous pouvez appeler ActualDevice sur Uidevice et regardez la propriété de modèle. EDIT: Bien que ... Les docs suggèrent que cela n'inclut pas le numéro de modèle exact.


3 Réponses :



6
votes
#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;
    }

2 commentaires

C'est simple ... après la dernière "si sinon", vous pouvez ajouter autre {modèleName = @ "iphone 5";}


N'utilisez pas d'autre sinon sans un si pour l'iPhone 5. Tous les périphériques inconnus renverront incorrectement à être appelés iPhone 5.



1
votes

Vous pouvez utiliser ce code pour détecter la version iPhone OS. Version flottante = [[[[[[Uidevice CurrentDevice] Systemversion] Floatvalue]; XXX


0 commentaires