7
votes

identifier par programme le périphérique iPhone

Je veux identifier le périphérique sur lequel ma demande est installée. Cela signifie que lorsque j'installe l'application sur l'iPhone, cela devrait me dire les informations sur le périphérique. Les informations sont comme, l'appareil est 2G, 3G ou 3GS.

Actuellement, je n'obtiens que le modèle, le nom, le nom de l'appareil, SystemVersion de l'appareil.

Je veux savoir que l'appareil est 2G, 3G ou 3GS.

Aidez-moi s'il vous plaît.


0 commentaires

3 Réponses :


8
votes

Dans l'historique passé de la programmation MAC, cela a toujours été considéré comme une mauvaise question.

Ce que vous avez vraiment besoin de savoir est une information plus spécifique. Demandez une question beaucoup plus étroite pour chaque décision de comportement dans votre code. Par exemple, vous devrez peut-être savoir si l'appareil dispose de GPS ou non. Un autre est que vous ne devriez pas décider comment utiliser la pile OpenGL en fonction de quel périphérique de modèle il est, mais plutôt sur les informations de fonctionnement OpenGL / Extensions fournies.

Les informations que vous obtenez sont d'Uidevice, qui est une API malheureusement mal conçue. Il vous fournit exactement les mauvaises informations dans les pires chaînes de format possibles.

Erica SADUN a une extension à Uidevice qui peut être utile ici . C'est juste une enveloppe pour sysctlbyname ("hw.machine", ...) . Cette propriété est différente pour chaque modèle.

Mais encore une fois, c'est généralement la mauvaise question.


1 commentaires

D'accord. Sauf si vous travaillez sur une application qui vient d'inventorons tous les différents iPhone dans une flotte de sociétés et vous devez être capable de les trier, vous n'avez probablement pas besoin de savoir s'il est 3G ou 3GS, autant que cela supporte une Caractéristique que vous souhaitez accéder. Utilisez les disponibilitésMacros pour savoir si votre fonctionnalité nécessaire est prise en charge sur l'appareil.



5
votes

C'est ce que j'ai utilisé dans mon application et cela fonctionne bien xxx

espère qu'il aide


1 commentaires

Hey bro! Cela a aidé mon! Merci beaucoup ! :)



0
votes

J'ai fait cela, il vous montre même le numéro de modèle:

struct utsname systemInfo;
    uname(&systemInfo);

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

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


    NSString *modelnumber = @"Not listed";

    //Simulator
    if([modelName isEqualToString:@"i386"] || [modelName isEqualToString:@"x86_64"]) {
        modelName = @"iPhone Simulator";
        modelnumber = @"XXXXX";

    }

    //iPhone
    else if([modelName isEqualToString:@"iPhone1,1"]) {
        modelName = @"iPhone";
        modelnumber = @"A1203";
    }
    else if([modelName isEqualToString:@"iPhone1,2"]) {
        modelName = @"iPhone 3G";
        modelnumber = @"A1241/A1324";
    }
    else if([modelName isEqualToString:@"iPhone2,1"]) {
        modelName = @"iPhone 3GS";
        modelnumber = @"A1303/A1325";
    }
    else if([modelName isEqualToString:@"iPhone3,1"]) {
        modelName = @"iPhone 4 (GSM)";
        modelnumber = @"A1332";
    }
    else if([modelName isEqualToString:@"iPhone3,2"]) {
        modelName = @"iPhone 4 GSM Rev A";
        modelnumber = @"Not listed";
    }
    else if([modelName isEqualToString:@"iPhone3,3"]) {
        modelName = @"iPhone 4 (CDMA)";
        modelnumber = @"A1349";
    }
    else if([modelName isEqualToString:@"iPhone4,1"]) {
        modelName = @"iPhone 4S";
        modelnumber = @"A1387/A1431";
    }
    else if([modelName isEqualToString:@"iPhone5,1"]) {
        modelName = @"iPhone 5 (GSM)";
        modelnumber = @"A1428";
    }
    else if([modelName isEqualToString:@"iPhone5,2"]) {
        modelName = @"iPhone 5 (GSM+CDMA)";
        modelnumber = @"A1429/A1442";
    }

    //iPod touch
    else if([modelName isEqualToString:@"iPod1,1"]) {
        modelName = @"iPod touch 1G";
        modelnumber = @"A1213";
    }
    else if([modelName isEqualToString:@"iPod2,1"]) {
        modelName = @"iPod touch 2G";
        modelnumber = @"A1288";
    }
    else if([modelName isEqualToString:@"iPod3,1"]) {
        modelName = @"iPod touch 3G";
        modelnumber = @"A1318";
    }
    else if([modelName isEqualToString:@"iPod4,1"]) {
        modelName = @"iPod touch 4G";
        modelnumber = @"A1367";
    }
    else if([modelName isEqualToString:@"iPod5,1"]) {
        modelName = @"iPod touch 5G";
        modelnumber = @"A1421";
    }

    //iPad
    else if([modelName isEqualToString:@"iPad1,1"]) {
        modelName = @"iPad 1G";
        modelnumber = @"A1219/A1337";
    }
    else if([modelName isEqualToString:@"iPad2,1"]) {
        modelName = @"iPad 2 (WiFi)";
        modelnumber = @"A1395";
    }
    else if([modelName isEqualToString:@"iPad2,2"]) {
        modelName = @"iPad 2 (GSM)";
        modelnumber = @"A1396";
    }
    else if([modelName isEqualToString:@"iPad2,3"]) {
        modelName = @"iPad 2 (CDMA)";
        modelnumber = @"A1397";
    }
    else if([modelName isEqualToString:@"iPad2,4"]) {
        modelName = @"iPad 2 (WiFi + Rev A)";
        modelnumber = @"A1395";
    }
    else if([modelName isEqualToString:@"iPad3,1"]) {
        modelName = @"iPad 3 (WiFi)";
        modelnumber = @"A1416";
    }
    else if([modelName isEqualToString:@"iPad3,2"]) {
        modelName = @"iPad 3 (GSM+CDMA)";
        modelnumber = @"A1403";
    }
    else if([modelName isEqualToString:@"iPad3,3"]) {
        modelName = @"iPad 3 (GSM)";
        modelnumber = @"A1430";
    }
    else if([modelName isEqualToString:@"iPad3,4"]) {
        modelName = @"iPad 4 (WiFi)";
        modelnumber = @"A1458";
    }
    else if([modelName isEqualToString:@"iPad3,5"]) {
        modelName = @"iPad 4 (GSM)";
        modelnumber = @"A1459";
    }
    else if([modelName isEqualToString:@"iPad3,6"]) {
        modelName = @"iPad 4 (GSM+CDMA)";
        modelnumber = @"A1460";
    }

    //iPad mini
    else if([modelName isEqualToString:@"iPad2,5"]) {
        modelName = @"iPad mini (WiFi)";
        modelnumber = @"A1432";
    }
    else if([modelName isEqualToString:@"iPad2,6"]) {
        modelName = @"iPad mini (GSM)";
        modelnumber = @"A1454";
    }
    else if([modelName isEqualToString:@"iPad2,7"]) {
        modelName = @"iPad mini (GSM+CDMA)";
        modelnumber = @"A1455";
    }

    //Apple TV, just for funn:)
    else if([modelName isEqualToString:@"AppleTV2,1"]) {
        modelName = @"Apple TV 2G";
        modelnumber = @"A1378";
    }
    else if([modelName isEqualToString:@"AppleTV3,1"]) {
        modelName = @"Apple TV 3G";
        modelnumber = @"A1427";
    }
    else if([modelName isEqualToString:@"AppleTV3,2"]) {
        modelName = @"Apple TV 3G (Rev A)";
        modelnumber = @"A1469";
    }

    NSLog(@"Device model: %@/ %@ /%@",modelName,machinename,modelnumber);


0 commentaires