Как отобразить текущую версию моего приложения для пользователя?

Я хотел бы добавить текущую версию в раздел «about» моего приложения. Как видно из прилагаемого скриншота, Apple предлагает управление версиями.

Как вы показываете эти настройки в своем приложении?

Снимок экрана с сайта «myApp» http://sofru.miximages.com/iphone/30c7ith.png

После дальнейшего поиска и тестирования я нашел решение самостоятельно.

NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary]; NSLog(@"%i Keys: %@", [infoDictionary count], [[infoDictionary allKeys] componentsJoinedByString: @" ,"]); 

Этот snipplet дал мне следующий результат:

20 Ключи: NSBundleResolvedPath, CFBundleVersion, NSBundleInitialPath, CFBundleIdentifier, NSMainNibFile, CFBundleIconFile, CFBundleInfoPlistURL, CFBundleExecutable, DTSDKName, UIStatusBarStyle, CFBundleDevelopmentRegion, DTPlatformName, CFBundleInfoDictionaryVersion, CFBundleSupportedPlatforms, CFBundleExecutablePath, CFBundleDisplayName, LSRequiresIPhoneOS, CFBundlePackageType, CFBundleSignature, CFBundleName

Таким образом, решение так же просто, как:

 NSString *version =[[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleVersion"]; 

Однако это не текущая версия проекта, как показано на скриншоте, а версия Bundle файла plist.

Просмотрите свой файл Info.plist который должен иметь такие ключи, как CFBundleVersion и CFBundleShortVersionString

Эти элементы в сборке не доступны для вашего встроенного приложения. Они являются заполнителями, которые вы могли бы использовать в своем приложении. Что в вашем приложении есть все, что вы размещаете, скажем, в папке «Ресурсы» вашего приложения, например, в любых текстовых файлах или листах, или в хорошем изображении вашего инженера по разработке версий.

Теперь вы можете вытащить некоторые элементы в окне информации о сборке в info.plist, используя специальные идентификаторы, такие как $ {VERSION_INFO_PREFIX} или другой токен. Токены доступны, если вы нажмете на любой из предметов с левой стороны в окне, которое вы указали выше. Например, щелкните по слову «Текущая версия проекта» и скопируйте токен, который вы видите внизу, «CURRENT_PROJECT_VERSION». Затем перейдите в свой файл plist и добавьте запись. Дайте ему любое имя, которое вы хотите, или «Текущая версия проекта». Вставьте в $ {CURRENT_PROJECT_VERSION} с правой стороны. Теперь это значение доступно вам из вашего приложения, программно. Конечно, кто-то теперь должен ввести эту ценность в соответствующее место либо в окне «Информация о сборке», либо в другом месте. Просто проще просто управлять этим и такими полями в файле info.plist. Это зависит от вас, как вы хотели бы справиться с этими вещами.

Вот как я получаю информацию о версии из моего info.plist:

 + (NSString *) getAppVersionNumber; { NSString *myVersion, *buildNum, *versText; myVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; buildNum = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleVersionKey]; if (myVersion) { if (buildNum) versText = [NSString stringWithFormat:@"Version: %@ (%@)", myVersion, buildNum]; else versText = [NSString stringWithFormat:@"Version: %@", myVersion]; } else if (buildNum) versText = [NSString stringWithFormat:@"Version: %@", buildNum]; NSLog(versText); return versText; } 
  NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"CFBundleVersion"]; 

возвращает мне всегда одно и то же значение (первоначальная версия), даже если я изменяю версию из параметров проекта, но.

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

делает трюк.

Для ленивых – это быстрая версия:

 NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString")! 

NSBundle.mainBundle.infoDictionary[@"CFBundleShortVersionString"];

  • Трассировка стека или дополнительная информация о необработанном исключении в Xcode / iPhone
  • Вставить шрифт в пакет mac
  • Раскадровка iPhone: сцена для портретной и пейзажной сцены
  • shouldAutorotateToInterfaceOrientation не работает в iOS 6
  • Добавление пути поиска заголовка системы к Xcode
  • Ошибка Xcode 4 для обозначения журнала сбоев
  • Как инициализировать свойства, которые зависят друг от друга
  • Идентификатор пакета и нажмите сертификат ... aps-environment
  • Что такое ошибка связи: OS_xpc_error в Xcode 6?
  • Сохранять цикл в ARC
  • Как добавить JPEG в каталог активов в Xcode?
  • Interesting Posts

    Как проверить, является ли ввод числовым в C ++

    Загрузите все ссылки PDF на веб-странице?

    Почему в области уведомлений нет доступа к Интернету, когда нет связи с какой-либо сетью, либо Wired / Wireless

    xpath: найти узел, атрибут classа которого соответствует значению и текст которого содержит определенную строку

    Как проверить физическое состояние USB-накопителя в Linux?

    Остановить Ubuntu от автоматического обновления времени

    Аккумулятор включен или выключен во время работы ноутбука на электричестве?

    Просмотр расширенных макросов C

    ASP.NET GridView: как редактировать и удалять записи данных

    Преимущество локальных classов Java

    Изменить идентификатор / идентификатор поставщика USB-устройства

    Внешние жесткие диски, поврежденные сектора, восстанавливают / маркируют утилиту в Linux

    Изменение цвета строки состояния с помощью AppCompat ActionBarActivity

    Неуправляемые DLL не загружаются на сервере ASP.NET

    Зачем пытаться! () И? не компилироваться при использовании в функции, которая не возвращает результат?

    Давайте будем гением компьютера.