ultima para pantalla for color cambio cambiar actualizar actualizacion iphone xcode ipad ios-simulator

iphone - pantalla - twitter ios para android



¿Cómo mostrar programáticamente el número de versión/compilación del objetivo en la aplicación iOS? (3)

¡Hay 2 números!

El número de versión comercial es para los clientes, llamado número de versión . Comienza con 1.0 y sube para actualizaciones mayores a 2.0 , 3.0 , para actualizaciones menores a 1.1 , 1.2 y para correcciones de errores a 1.0.1 , 1.0.2 . Este número está orientado a lanzamientos y nuevas funciones. No tiene que detenerse en 9, 1.11.23 es un número de versión razonable.

El número de compilación es principalmente el número interno de construcciones que se han realizado hasta entonces. Pero algunos usan otros números como el número de rama del repositorio o su número de confirmación. Este número debe ser único para distinguir las diferentes compilaciones, que solo tienen cambios incrementales menores.

Para obtener el número de versión :

C objetivo:

NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];

Swift <3.0:

let appVersionString: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String

Swift 3.0:

let appVersionString: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String

Para obtener el número de compilación :

C objetivo:

NSString * appBuildString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];

Swift <3.0:

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

Swift 3.0:

let buildNumber: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String

Si quieres ambos en uno:

Luego debes usar primero las líneas de arriba.

C objetivo:

NSString * versionBuildString = [NSString stringWithFormat:@"Version: %@ (%@)", appVersionString, appBuildString];

Rápido:

let versionAndBuildNumber: String = "/(versionNumber) (/(buildNumber))"

Notas:

Los valores en el paquete principal no siempre están presentes, por ejemplo, en una aplicación de línea de comandos no hay CFBundleShortVersionString o CFBundleVersion , por lo que los métodos devolverán nil y se bloqueará porque en el código produce un downcast incorrecto. Pero en las aplicaciones Cocoa iOS y Mac normales, estos valores están definidos y no serán eliminados.

Esto se prueba con Xcode versión 7.3 (7D175) . El número de compilación a menudo se escribe entre paréntesis / llaves. El número de compilación es hexadecimal o decimal.

En Xcode , puede incrementar automáticamente el número de compilación como un número decimal al colocar lo siguiente en la fase de compilación del Run script ejecución en la configuración del proyecto.

#!/bin/bash     buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") buildNumber=$(($buildNumber + 1)) /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

Para el número de compilación hexadecimal utilice esta secuencia de comandos

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") buildNumber=$((0x$buildNumber)) buildNumber=$(($buildNumber + 1)) buildNumber=$(printf "%X" $buildNumber) /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

Para Xcode haga lo siguiente:

Paso 1

Paso 2

Paso 3

¿Cómo puedo obtener de forma programática el valor de la target version , como en la imagen de abajo?

Como se ve en la ventana Propiedades del objetivo de mi proyecto Xcode. Quiero mostrar esto en la pantalla de bienvenida de mi aplicación para saber qué versión usa actualmente la gente.


Aquí el mismo código para Swift 3 :

let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String


No necesita cambiar nada en su proyecto o XCode. Aquí está la versión de Swift 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