Как программно отобразить номер версии / сборки цели в приложении iOS?


Как я могу программно получить значение target version, как на рисунке ниже?

Как видно в окне свойств целевого объекта моего проекта Xcode. Я хочу отобразить это на экране заставки моего приложения, чтобы я знал, какую версию люди в настоящее время используют?

4   123   2010-06-10 19:21:38

4 ответа:

здесь 2 цифры!

номер маркетингового релиза для клиентов, называется номер версии. Она начинается с 1.0 и идет вверх для основных обновлений до 2.0, 3.0, для незначительных обновлений 1.1, 1.2 и для исправления ошибок 1.0.1, 1.0.2 . Это число ориентировано на выпуски и новые функции. Это не должно останавливаться в 9, 1.11.23 разумная версия.

The номер сборки в основном внутреннее количество сборок это было сделано до тех пор. Но некоторые используют другие номера, такие как номер филиала репозитория или его номер фиксации. Это число должно быть уникальный чтобы различать различные сборки, которые имеют только незначительные инкрементные изменения.


для получения версия номер:

Цель-C:

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

Swift

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

Swift 3.0:

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

для получения построить номер:

Цель-C:

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

Swift

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

Swift 3.0:

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

если вы хотите и в:

затем вы должны использовать вышеуказанные строки первый.

Цель-C:

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

Swift:

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

Примечания:

значения в основном пакете присутствуют не всегда, например в приложении командной строки нет CFBundleShortVersionString или CFBundleVersion, поэтому методы вернут nil и он рухнет, потому что в коде он делает неправильные потупив. Но в обычных приложениях Cocoa iOS и Mac эти значения определены и не будут удалены.

это проверено с Xcode версии 7.3 (7D175). Номер сборки часто пишется в скобках / фигурных скобках. Номер сборки указывается в шестнадцатеричном или десятичном формате.

buildandversion


на Xcode вы можете автоматически увеличить номер сборки как десятичное число поместив в Run script этап сборки в настройках проекта

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

на шестнадцатеричное номер сборки используйте это скрипт

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"

на Xcode сделать следующее:

Шаг 1

step1

Шаг 2

step2

Шаг 3

step3

вам не нужно ничего менять в вашем проекте или Xcode. Вот версия Swift для обоих отдельно:

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

он включен в это РЕПО, проверьте его:

https://github.com/goktugyil/EZSwiftExtensions

тут же код для Swift 3:

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

программно отображать версию и номер сборки-Swift 4.0

let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") ?? "1.0"

let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") ?? "1.0"            

let versionAndBuildNumber = "Ver #\(versionNumber) ( Build #\(buildNumber) )"