versiones significado descargar apple app ios objective-c

descargar - ios significado



la aplicación iOS, obtiene programáticamente la versión de compilación (7)

¿Hay alguna forma de obtener programáticamente la versión de compilación de mi aplicación? Necesito poder detectar cuándo el usuario ha actualizado la aplicación a través de la AppStore, para ejecutar algún código de ajustes


1) Para obtener la versión de la aplicación, debes usar un:

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

2) Para obtener la versión Build tienes que usar un:

NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];


Al usar MFMailComposeViewController para un botón "Contáctenos", utilizo este código para obtener un HTML formateado en el correo electrónico del usuario. Me da toda la información que necesito para comenzar a ayudar a resolver cualquier problema:

struct utsname systemInfo; uname(&systemInfo); NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; NSDate *date = [NSDate date]; [formatter setDateFormat:@"MM/dd/yyyy ''at'' hh:mm a"]; NSString *dateString = [formatter stringFromDate:date]; CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat screenWidth = screenRect.size.width - 65.0; NSString *comments = NSLocalizedString(@"Please write your comments bellow:", nil); NSString *build = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey]; NSString *deviceModel = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; NSString *iOSVersion = [[UIDevice currentDevice] systemVersion]; NSString *emailBody = [NSString stringWithFormat:@"<!DOCTYPE html><html><style> .div {background-color: lightgrey; width: %fpx; padding: 10px; border: 5px solid navy; margin: 2px;}</style><body><div class=''div''><p><b>App:</b> %@</p><b><p>Device:</b> %@</p><b><p>iOS Version:</b> %@</p><b><p><p>App Version and Build:</b> %@ (%@)</p><b><p>Date:</b> %@</p> </p></div><font color=''red''><b>%@</b></font><br><br></body></html>",screenWidth,appName,deviceModel,iOSVersion,version,build,dateString,comments]; [self setMessageBody:emailBody isHTML:YES];

Este es el resultado al recibir el mensaje:


El valor que establece en el campo "Versión" del resumen de objetivos de Xcode se encuentra aquí:

Swift 3

let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as! String

ObjC

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

Swift 2

let version = NSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"] as! String

y el "Build":

Swift 3

let build = Bundle.main.infoDictionary?[kCFBundleVersionKey as String] as? String

ObjC

NSString *build = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleVersionKey];

Swift 2

let build = NSBundle.mainBundle().infoDictionary?[kCFBundleVersionKey as String] as! String


He escrito este proyecto de código abierto precisamente para este propósito. Mi proyecto publica notificaciones cuando se producen eventos importantes, como cuando un usuario abre la aplicación por primera vez o abre la aplicación después de la actualización (con información sobre la versión desde la que el usuario actualizó). La fuente es simple y debe ser fácil de entender. Avíseme si tiene alguna pregunta / solicitud.

Recientemente también escribí una publicación en un blog sobre esto.


Puedes intentar usar el infoDictionary

NSDictionary *infoDictionary = [[NSBundle mainBundle]infoDictionary]; NSString *version = infoDictionary[@"CFBundleShortVersionString"]; NSString *build = infoDictionary[(NSString*)kCFBundleVersionKey]; NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey];


Swift versión para ambos por separado:

let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String

Está incluido en este repositorio, compruébalo:

https://github.com/goktugyil/EZSwiftExtensions


Swift 3 obtiene la versión del paquete y las cadenas de construcción

Código

extension UIApplication { class var Build: String? { get { return Bundle.main.infoDictionary?[kCFBundleVersionKey as String] as? String } } class var Version: String? { get { return Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String } } }

Uso

print("Version /(UIApplication.Version!)") print("Build /(UIApplication.Build!)")

Resultado

Configuración del proyecto

Consola