Я хотел бы добавить текущую версию в раздел "о" моего приложения. Как видно на прилагаемом скриншоте, Apple предлагает управление версиями.
Как вы отображаете эти настройки в своем приложении?
Я хотел бы добавить текущую версию в раздел "о" моего приложения. Как видно на прилагаемом скриншоте, Apple предлагает управление версиями.
Как вы отображаете эти настройки в своем приложении?
После дальнейшего поиска и тестирования я нашел решение самостоятельно.
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"];