Как программно отобразить номер версии / сборки цели в приложении iOS?
Как я могу программно получить значение target version, как на рисунке ниже?
Как видно в окне свойств целевого объекта моего проекта Xcode. Я хочу отобразить это на экране заставки моего приложения, чтобы я знал, какую версию люди в настоящее время используют?
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! StringSwift 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! StringSwift 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). Номер сборки часто пишется в скобках / фигурных скобках. Номер сборки указывается в шестнадцатеричном или десятичном формате.
на 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
Шаг 2
Шаг 3
вам не нужно ничего менять в вашем проекте или Xcode. Вот версия Swift для обоих отдельно:
let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! Stringон включен в это РЕПО, проверьте его:
тут же код для 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) )"




Comments