2014-11-18 4 views
0

После первого запуска моего приложения я использовал настройки NSUser для показа ввода моего приложения.Первый запуск iOS после обновления

Однако, как только обновление было выпущено и установлено, я хочу показать новую страницу после первого запуска после обновления. Моя проблема заключается в том, что по умолчанию пользовательские настройки NS не сбрасываются, и у каждого будет разное количество запусков.

я мог бы использовать этот код, чтобы отработать версию программного обеспечения ...

if ([[NSString stringWithFormat:@"Version %@",[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]]isEqualToString:@"Version 1.0"]) 
{ 
// first launch code here 
} 

... но как я тогда только получить, что новую страницу появлюсь на первый запуск после обновления, а не каждый начать?

Если какой-либо код необходим, он должен быть в Objective C, так как я еще не начал развиваться быстрым. Спасибо заранее за любую помощь.

ответ

3

Используйте NSUserDefaults для хранения логического значения, например "hasShowedUpatePopupForVersionXX". Не забудьте установить его YES в случае нового устанавливает

//check if popup has been shown 
if (![[NSUserDefaults standardUserDefaults] valueForKey:@"hasShowedUpatePopupForVersionXX"]) { 
    // Set the value to YES 
    [[NSUserDefaults standardUserDefaults] setValue:@YES forKey:@"hasShowedUpatePopupForVersionXX"]; 
} 
+0

Спасибо за помощь. Не могли бы вы представить пример, поскольку я очень новичок в разработке и еще не установил логические значения в NSUserDefaults. –

+0

То же самое, что вы сделали, чтобы показать экран запуска. – Antzi

+0

О, хорошо. спасибо –

3

Выполните проверку версии вашего приложения и сохранить текущую версию в NSUserDefaults. Затем при запуске проверьте, чтобы значение соответствовало текущему значению. Если это не так, отобразите содержимое, которое вы хотите отобразить, затем сохраните ключ NSUserDefaults для нового значения. Я бы не сохранил значение Bool и скорее сохранил бы текущую версию вашего приложения.

Как получить текущую версию

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; 
+0

Это звучит более умно, но тогда вы не можете нажать конкретный код для переноса, а незначительные обновления (небольшие исправления ошибок) вызовут экран обновления, что может оказаться неприемлемым. – Antzi

+0

? Почему это не работает для конкретной сборки? Единственное, о чем идет речь, это текущая версия. Отобразите текущие изменения для текущей версии, и все остальное, очевидно, будет в прошлом. И нет ... все, что вам нужно сделать, это проверить номер версии и расшифровать основные или незначительные сборки. Если номер версии правильно назначен, это легко (1.x против 1.1 vs 1.1.1 и т. Д.). Добавление значения Bool для каждого отдельного обновления добавило бы много беспорядков и ненужных полей в NSUserDefaults. –

+0

Несомненно, я мог просто загружать заданное представление с соответствующей информацией каждый раз, когда приложение загружается после его обновления. Это всегда может быть одно и то же мнение, поскольку я могу изменить информацию обо всех обновлениях. Как я могу загрузить это представление в инструкции iF, используя приведенный выше код? Извините, если это немного глупо, но я немного запутался в том, как реализовать вышеуказанный код. –

1

Используя вышеуказанные коды, я создал полностью рабочий участок кода, который находит версию приложения.

Если версия приложения в NSUserdefaults не совпадает, она завершит segue и обновит NSUserdefaults, чтобы она не запускалась снова до обновления приложения.

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]; 

NSLog(@"App Version is %@",version); 

if ([[NSString stringWithFormat:@"Version %@",[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]]isEqualToString:@"Version 1.0"]) 
{ 
    //check if popup has been shown 
    if (![[[NSUserDefaults standardUserDefaults] valueForKey:@"appVersion"] isEqualToString:version]) { 
        [self performSegueWithIdentifier:@"showUpdate" sender:self]; 
     // Set the value to YES 
     [[NSUserDefaults standardUserDefaults] setValue:version forKey:@"appVersion"]; 
    } 
Смежные вопросы