Приближение релиза приложения: 2 быстрых вопроса - PullRequest
0 голосов
/ 03 декабря 2011

По мере приближения к выпуску моего приложения я пытаюсь убедиться, что использую стабильный код, чтобы проверить, было ли приложение запущено ранее (для того, чтобы выполнить некоторую первоначальную настройку).Является ли это (очевидно, метод без излишеств, который не принимает во внимание версию приложения и обновления) в значительной степени надежный способ определить, было ли приложение запущено?

В моем делегате приложения метод didFinishLaunchingWithOptions я выполняюкаждый раз следующее:

NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];

if(![defaults objectForKey:@"not_first_launch"])
{
    NSLog(@"This is the first time the app has been launched.\nPerforming first-time setup procedures...");
    [self runFirstTimeSetup];
}

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

Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Да, это хорошее применение NSUserDefaults.

Данные пользователя сохраняются через обновления.

Просто убедитесь, что вы храните данные, прилагаемые к вашему приложению, и данные, сгенерированные во время выполнения, в отдельных корзинах. Так что, если вам нужно изменить первый (через обновление приложения), последний остается нетронутым. Например, не помещайте их обоих в одну таблицу SQLite.

1 голос
/ 03 декабря 2011

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    ...normal code...

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if (![defaults objectForKey:@"kFirstUse"]) {
        [defaults setObject:[NSDate date] forKey:@"kFirstUse"];
        [defaults synchronize];
    }
}

Причина, по которой я хотел опубликовать сообщение, заключается в том, что пока я проверяю, является ли это первым запуском пользователя, я также сохраняюдата их первого запуска.Без лишнего кода я решил, почему бы не сохранить эту первую дату запуска.Я вообще не использую эту информацию в своем приложении, но подумал, что, возможно, в будущем смогу.В будущем я думал о добавлении в покупку приложений, и я бы бесплатно раздал этот материал своим первоначальным пользователям;так что это позволяет мне быть готовым к будущему и в то же время достигать своей цели.

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

Еще одна хорошая вещь, которую нужно добавить, это строка [defaults synchronize];, которая буквально заставляет приложение сохранять эти данные.Приложение периодически автоматически сохраняет данные, но мне нравится быть в безопасности и знать, что мои материалы сохранены.

Дайте мне знать, если у вас есть другие вопросы

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