[iphone] ¿Cómo podemos detectar mediante programación qué versión de iOS se está ejecutando en el dispositivo?


4 Answers

Actualizar

Desde iOS 8, podemos usar el nuevo método NSProcessInfo en 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
   }

Tenga en cuenta que esto se bloqueará en iOS 7, ya que la API no existía antes de iOS 8. Si está admitiendo iOS 7 y versiones posteriores, puede realizar el control de forma segura

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

Respuesta original iOS <8

En aras de la exhaustividad, este es un enfoque alternativo propuesto por Apple en la Guía de transición de la interfaz de usuario de iOS 7 , que consiste en verificar la versión de Foundation Framework.

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

Esta pregunta ya tiene una respuesta aquí:

Quiero verificar si el usuario ejecuta la aplicación en iOS de menos de 5.0 y muestra una etiqueta en la aplicación.

¿Cómo puedo detectar qué iOS se está ejecutando en el dispositivo del usuario programáticamente?

¡Gracias!




Para obtener información del número de versión más específica con versiones principales y secundarias separadas:

NSString* versionString = [UIDevice currentDevice].systemVersion;
NSArray* vN = [versionString componentsSeparatedByString:@"."];

La matriz vN contendrá las versiones mayor y menor como cadenas, pero si desea hacer comparaciones, los números de versión se deben almacenar como números (ints). Puede agregar este código para almacenarlos en C-array * versionNumbers :

int versionNumbers[vN.count];
for (int i = 0; i < sizeof(versionNumbers)/sizeof(versionNumbers[0]); i++)
    versionNumbers[i] = [[vN objectAtIndex:i] integerValue];

* C-arrays utilizados aquí para una sintaxis más concisa.




[[[UIDevice currentDevice] systemVersion] floatValue]



Una comprobación simple para la versión de iOS menos de 5 (todas las versiones):

if([[[UIDevice currentDevice] systemVersion] integerValue] < 5){
        // do something
};



[[UIDevice currentDevice] systemVersion]



Related