Ci sono 2 numeri!
Il numero della versione di marketing è per i clienti, chiamato numero di versione . Inizia con 1.0 e va per aggiornamenti importanti a 2.0 , 3.0 , per aggiornamenti minori a 1.1 , 1.2 e per correzioni di bug a 1.0.1 , 1.0.2 . Questo numero è orientato alle versioni e alle nuove funzionalità. Non deve fermarsi alle 9, 1.11.23 è un numero di versione ragionevole.
Il numero di build è principalmente il numero interno di build che sono state fatte fino ad allora. Ma alcuni usano altri numeri come il numero di diramazione del repository o il suo numero di commit. Questo numero dovrebbe essere univoco per distinguere le diverse build, che presentano solo piccole modifiche incrementali.
Per ottenere il numero di versione :
Objective-C:
NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
Swift <3.0:
let appVersionString: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
Swift 3.0+ (testato con 5.0):
let appVersionString: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
Per ottenere il numero di build :
Objective-C:
NSString * appBuildString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
Swift <3.0:
let buildNumber: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
Swift 3.0+ (testato fino alla 5.0):
let buildNumber: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
Se vuoi entrambi in uno:
Prima usa le righe sopra e poi quelle seguenti.
Objective-C:
NSString * versionBuildString = [NSString stringWithFormat:@"Version: %@ (%@)", appVersionString, appBuildString];
Swift (testato fino alla 5.0):
let versionAndBuildNumber: String = "\(appVersionString) (\(buildNumber))"
Appunti:
I valori nel bundle principale non sono sempre presenti, ad esempio in un'applicazione a riga di comando non è presente CFBundleShortVersionString
o CFBundleVersion
, quindi i metodi restituiranno nil
e si arresterà in modo anomalo perché nel codice effettua un downcast errato. Ma nelle normali app Cocoa iOS e Mac questi valori sono definiti e non verranno eliminati.
Questo è testato con Xcode versione 7.3 (7D175) . Il numero di build è spesso scritto tra parentesi / parentesi graffe. Il numero di build è in esadecimale o decimale.
In Xcode è possibile incrementare automaticamente il numero di build come numero decimale inserendo quanto segue nella Run script
fase di build nelle impostazioni del progetto
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Per il numero di build esadecimale, utilizzare questo script
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"
Per Xcode
fare quanto segue:
Passo 1
Passo 2
Passaggio 3