Определить, когда приложение открывается в первый раз после запуска - PullRequest
1 голос
/ 22 февраля 2011

Я хочу отобразить справочное сообщение на контроллере представления, когда приложение установлено и открыто ТОЛЬКО в первый раз.

Есть ли способ, который я могу использовать для этого?

Ответы [ 3 ]

7 голосов
/ 22 февраля 2011

Вы можете отобразить сообщение справки один раз, а затем сохранить логическое значение в NSUserDefaults, чтобы указать, что оно не должно отображаться снова:

NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
BOOL appHasBeenLaunchedBefore = [userDefaults boolForKey:@"HasBeenLaunched"];
if (!appHasBeenLaunchedBefore)
{
    [self showHelpMessage];
}
[userDefaults setBool:YES forKey:"HasBeenLaunched"];
2 голосов
/ 22 февраля 2011

Используйте Grand Central Dispatch dispatch_once() и проверьте некоторое постоянное хранилище.

static dispatch_once_t pred;
dispatch_once(&pred,^{
    NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
    BOOL hasLaunched = [userDefaults boolForKey:kAppHasLaunched];
    if (!hasLaunched) {
        [self showFirstLaunchMessage];
        [userDefaults setBool:YES forKey:kAppHasLaunched];
    }
});

Это самый простой способ обеспечить запуск кода только один раз в вашем приложении за запуск (в этом случае блок будет толькобыть выполненным один раз).Более подробную информацию об этом можно найти в справочном материале Grand Central .В этом блоке вам просто нужно проверить некоторое постоянное хранилище, например ваши настройки, чтобы увидеть, запускалось ли ваше приложение раньше, и отобразить соответствующее сообщение.

2 голосов
/ 22 февраля 2011

Используйте ключ по умолчанию для пользователя. Например:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
BOOL launchedBefore = [userDefaults boolForKey:@"hasRunBefore"];

if(!hasRunBefore)
{
    NSLog(@"this is my first run");
    [userDefaults setBool:YES forKey:@"hasRunBefore"];
}

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

РЕДАКТИРОВАТЬ: это явно тот же ответ, который дал e.James до меня. Панель «Другие ответы опубликованы» не появилась. Я оставлю это для примера кода, но не заслуживаю благодарности за первый ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...