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 !
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 !
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
}
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;
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
}
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
}
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.