295 votes

Comment peut-on détecter par programme quel iOS version est périphérique exécutant ?

Je veux vérifier si l’utilisateur exécute l’application sur iOS inférieur à 5.0 et afficher une étiquette dans l’application.

Comment j’ai détecter qu’iOS est en cours d’exécution sur le périphérique de l’utilisateur par programmation ?

Merci !

689voto

Marek Sebera Points 15987

Meilleur version actuelle, sans nécessité de traiter numérique de recherche au sein de NSString est de définir macros (Voir réponse originale à cette question: Case iPhone iOS Version)

Ces macros existent dans github, voir: https://github.com/carlj/CJAMacros/blob/master/CJAMacros/CJAMacros.h

Comme ceci:

#define SYSTEM_VERSION_EQUAL_TO(v)                  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v)              ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v)                 ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

et de les utiliser comme ceci:

if (SYSTEM_VERSION_LESS_THAN(@"5.0")) {
    // code here
}

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {
    // code here
}

Version obsolète ci-dessous

pour obtenir la version de l'OS:

[[UIDevice currentDevice] systemVersion]

renvoie la chaîne de caractères, qui peut être transformé en int/float via

-[NSString floatValue]
-[NSString intValue]

comme ceci

Les deux valeurs (floatValue, intValue) sera absent en raison de son type, 5.0.1 deviendra 5.0 ou 5 (float ou int), pour comparer précisément, vous aurez à le séparer de tableau d'Entiers vérifier accepté de réponse ici: Vérifier la Version iOS de l'iPhone

NSString *ver = [[UIDevice currentDevice] systemVersion];
int ver_int = [ver intValue];
float ver_float = [ver floatValue];

et de comparer comme ça

NSLog(@"System Version is %@",[[UIDevice currentDevice] systemVersion]);
NSString *ver = [[UIDevice currentDevice] systemVersion];
float ver_float = [ver floatValue];
if (ver_float < 5.0) return false;

262voto

Gabriele Petronella Points 32362

Mise à jour

Depuis iOS 8, nous pouvons utiliser le nouveau isOperatingSystemAtLeastVersion méthode NSProcessInfo

   NSOperatingSystemVersion ios8_0_1 = (NSOperatingSystemVersion){8, 0, 1};
   if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:ios8_0_1]) {
      // iOS 8.0.1 and above logic
   } else {
      // iOS 8.0.0 and below logic
   }

Attention que cela se crash sur iOS 7, que l'API n'existait pas avant iOS 8. Si vous êtes à soutenir iOS 7 et ci-dessous, vous pouvez effectuer en toute sécurité le vérifier avec

if ([NSProcessInfo instancesRespondToSelector:@selector(isOperatingSystemAtLeastVersion:)] {
  // conditionally check for any version >= iOS 8 using 'isOperatingSystemAtLeastVersion'
} else {
  // we're on iOS 7 or below
}

Réponse originale à cette question iOS < 8

Par souci d'exhaustivité, voici une autre approche proposée par Apple lui-même dans l' iOS 7 de l'INTERFACE utilisateur Guide de Transition, qui consiste à vérifier la Fondation Framework version.

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
   // Load resources for iOS 6.1 or earlier
} else {
   // Load resources for iOS 7 or later
}

23voto

Robert Yi Jiang Points 679

Je sais que je suis trop tard pour répondre à cette question. Je ne suis pas sûr que ma méthode fonctionne toujours sur les versions d’iOS faible (``

Vous pouvez obtenir ces résultats :

15voto

jbat100 Points 11445
[[UIDevice currentDevice] systemVersion]

14voto

Arunjack Points 101

``

ou consultez la version comme

Espérons que cette aide

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