Подтвердить что ты не робот

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

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

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

Screenshot of Target 'myApp' Info

4b9b3361

Ответ 1

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

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.

Ответ 2

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

Ответ 3

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

Теперь вы можете вытащить некоторые элементы в окне информации о сборке в 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;
}

Ответ 4

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

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

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

делает трюк.

Ответ 5

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

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

Ответ 6

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