262 votes

iOS iphone Téléchargez le modèle de l’appareil et faire ?

Je me demandais si il est possible de déterminer quel type de l'iPhone (par exemple) le currentdevice est? Je sais que c'est possible d'obtenir le modèle par le biais
NSString *deviceType = [[UIDevice currentDevice] model];
qui va juste retourner si j'ai un "iPhone" ou un "iPod", MAIS je me demandais si il est possible de détecter de savoir si j'ai un iPhone 3GS vs et iPhone 4 contre un iPhone 4S (en réalité, tout ce que je veux vraiment faire est de déterminer si j'ai un 3G ou pas, parce que je suis en train de faire assez graphiques intensives genre de trucs).

Si oui, faites le moi savoir, merci!

586voto

OhhMee Points 1792

SOIT essayer cette bibliothèque : http://github.com/erica/uidevice-extension/ (par Erica Sadun).

(Exemple de Code) :

OU vous pouvez utiliser cette méthode :

Vous pouvez obtenir le numéro de modèle de périphérique à l’aide d’uname de sys/utsname.h. Par exemple :

Le résultat doit être :

140voto

NicolasMiari Points 2687

Poursuivant sur la réponse de OhhMee ci-dessus, j’ai ajouté quelques failsafe pour soutenir les dispositifs futurs ne pas (encore) inscrit sur la liste :

J’ai également omis les renseignements détaillés (par exemple « modèle A1507, A1516, A1526 (Chine), A1529 | Global ») et l’a placé dans les commentaires au lieu de cela, au cas où vous souhaiteriez utiliser cela comme utilisateur face à chaînes et pas paniquer.

46voto

Tib Points 91

J’ai fait ce fichier plist pour vous aider à obtenir le nom complet pour chaque périphérique.

Basé sur la réponse de OhhMee, vous pouvez l’utiliser comme ceci :

20voto

RacZo Points 5731

[[UIDevice currentDevice] modèle] renvoie simplement "iPhone" ou "iPod", vous n'obtenez pas les numéros du modèle qui vous permettrait de distinguer entre les différentes générations d'appareils.

Le Code de cette méthode:

#include <sys/sysctl.h>

...

+ (NSString *)getModel {
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *model = malloc(size);
    sysctlbyname("hw.machine", model, &size, NULL, 0);
    NSString *deviceModel = [NSString stringWithCString:model encoding:NSUTF8StringEncoding];
    free(model);
    return deviceModel;
}

Et l'appel à la méthode [auto getModel] quand vous avez besoin le modèle et vous obtiendrez j'.e: "iPhone5,1" pour le ridiculement mince et rapide de l'iPhone 5. :)

Une bonne pratique est de créer une classe appelée Utils.h/Utisl.m et placer des méthodes comme getModel il de sorte que vous pouvez obtenir ces informations à partir de n'importe où dans votre Application tout simplement par l'importation de la classe et de l'invocation [Utils getModel];

12voto

Adam W. Dennis Points 101

J’ai optimisé la mise en œuvre de NicolasMiari et a ajouté `` , ici :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X