Existe-t-il un moyen de déterminer le périphérique exécutant une application. Je veux faire la distinction entre iPhone
et iPod Touch
, si possible.
371
Existe-t-il un moyen de déterminer le périphérique exécutant une application. Je veux faire la distinction entre iPhone
et iPod Touch
, si possible.
Réponses:
Vous pouvez utiliser la
UIDevice
classe comme ceci:la source
UI_USER_INTERFACE_IDIOM()
est sûr à utiliser dans les applications qui prennent toujours en charge iOS <3.2: il s'agit d'une macroUIDevice.h
spécifiquement écrite par défautUIUserInterfaceIdiomPhone
sur ces anciennes versions d'iOS.Il s'agit d'une mise à jour
UIDeviceHardware.m
de la réponse ci-dessus .la source
NSString
comparaison en cascade donnantNSString
estNSDictionary
.Le nom pour en définir une sans dépendances de code est.plist
.N'hésitez pas à utiliser cette classe ( gist @ github )
MISE À JOUR (14/01/11)
Évidemment, ce code est un peu obsolète à l'heure actuelle, mais il peut certainement être mis à jour en utilisant le code sur ce fil fourni par
Brian Robbins
qui comprend un code similaire avec des modèles mis à jour. Merci pour le soutien sur ce fil.la source
J'utilise ceci dans mon application. À jour en décembre 2012.
la source
#import <sys/sysctl.h>
Dernière mise à jour - octobre 2019: iPhone 11 , iPhone 11 Pro , iPhone 11 Pro Max et iPad ajoutés (7e génération) .
Mise à jour précédente - mars 2019: ajout de l' iPad Air 2019 (3e génération), de l' iPad mini 2019 (5e génération), de l' iPod Touch 2019 (7e génération)
Rapide
(Testé sur Swift 5, Swift 4, Swift 3)
La fonction ci-dessous renvoie une chaîne avec le nom du périphérique actuel.
Vous pouvez le tester en utilisant le code suivant:
Objectif c
J'ai également ajouté de nouveaux appareils au code Objective-C
N'oubliez pas d'importer sys / sysctl.h
Vous pouvez le tester en utilisant le code suivant:
la source
iPhone7,2
est le 6 maisiPhone8,1
est le 6S? ils ont inversé pour les 6 et 6S?la source
Chaînes de plateforme mises à jour pour
iPad Air 2
etiPad mini 3
:la source
Plus utilisable
vous pouvez lire les propriétés avec
la source
[[UIScreen mainScreen] scale]
c'est 2 ou non (pour iOS 5+).Voici une mise à jour mineure avec de nouveaux modèles:
la source
Je sais qu'une réponse a déjà été cochée, mais pour référence future, vous pouvez toujours utiliser la taille d'écran de l'appareil pour déterminer de quel appareil il s'agit:
la source
Il suffit d'ajouter le code de l'appareil iPhone 4S à ce fil ...
L'iPhone 4S renverra la chaîne @ "iPhone4,1".
la source
Que diriez-vous de ce code, si une nouvelle version est sortie, vous vous identifierez avec le dernier appareil connu
la source
Ajout au code d'Arash, je ne me soucie pas de mon application quel modèle j'utilise, je veux juste savoir quel type d'appareil, donc, je peux tester comme suit:
la source
Sur la base des très bonnes réponses ci-dessus, voici ce que j'ai trouvé. Ceci est très similaire à la réponse de @ Rodrigo, mais répond à la préoccupation de @ Oliver dans le commentaire sur cette réponse. Cela permet également d'inclure la chaîne de modèle dans la chaîne de sortie.
la source
Il y a une bibliothèque assez mature (par moi) pour cela appelée SDVersion . Vous pouvez vérifier le modèle de l'appareil en cours d'exécution, la taille de l'écran et de nombreux autres paramètres. Il prend également en charge OSX.
Exemple:
la source
la source
la source
Je suis allé un peu plus loin et j'ai converti le gros bloc "isEqualToString" en une classification de masques de bits pour le type d'appareil, la génération et cet autre qualificatif après la virgule (je l'appelle la sous-génération). Il est encapsulé dans une classe avec un appel singleton SGPlatform qui évite beaucoup d'opérations de chaînes répétitives. Le code est disponible https://github.com/danloughney/spookyGroup
Le cours vous permet de faire des choses comme ceci:
et
La classification des appareils est dans la méthode platformBits. Cette méthode devrait être très familière aux lecteurs de ce fil. J'ai classé les appareils selon leur type et leur génération, car je suis principalement intéressé par les performances globales, mais la source peut être modifiée pour fournir toute classification qui vous intéresse, écran rétine, capacités de mise en réseau, etc.
la source
L'extrait de code mentionné ci-dessous devrait aider:
la source
la source
Dutchie432
etBrian Robbins
ont fourni d'excellentes solutions. Mais il manque encore un modèle, l' iPhone 4 de Verizon . Voici la ligne manquante.la source
J'aime les trucs d'Erica Sadun. Elle comprend des appareils AppleTV et d'autres auxquels vous pourriez ne pas penser.
https://github.com/erica/uidevice-extension/blob/master/UIDevice-Hardware.h
la source
Les valeurs possibles de
sont
iPod touch
,iPhone
,iPhone Simulator
,iPad
,iPad Simulator
Si vous voulez savoir quel matériel
iOS
est en train de ruiner sur commeiPhone3
,iPhone4
,iPhone5
etc ci - dessous est le code pour queREMARQUE: Le code ci-dessous peut ne pas contenir toutes les chaînes de l'appareil, je suis avec d'autres gars qui conservent le même code sur GitHub , veuillez donc prendre le dernier code à partir de là
Objectif-C : GitHub / DeviceUtil
Swift : GitHub / DeviceGuru
la source
Réponse dans Swift 3,
la source
Pour une comparaison simple, j'aime toujours la macro:
C'est simple et facile à utiliser.
la source
Je voudrais ajouter que pour récupérer la couleur de la façade et du boîtier de l'appareil, il existe une API privée:
J'ai blogué à ce sujet et je fournis un exemple d'application:
http://www.futuretap.com/blog/device-colors/
la source
Je peux vous assurer que celui suggéré ci-dessus fonctionnera dans iOS 7 et supérieur. Je pense que cela fonctionnera également sur iOS 6. Mais je n'en suis pas sûr.
la source
Vous pouvez vérifier GBDeviceInfo sur GitHub, également disponible via CocoaPods. Il fournit une API simple pour détecter diverses propriétés avec la prise en charge de tous les derniers appareils:
[GBDeviceInfo deviceDetails].family == GBDeviceFamilyiPhone;
[GBDeviceInfo deviceDetails].model == GBDeviceModeliPhone6.
Pour plus d'informations, consultez le fichier Lisez - moi .
la source
Pour identifier l'iPhone 4S, vérifiez simplement les points suivants:
la source
J'ai créé une extension qui vous permet d'avoir 3 niveaux d'identification:
Il se met à jour avec les derniers appareils iOS
UIDeviceDetector
la source