NSUserdefaults Persistance - PullRequest
       19

NSUserdefaults Persistance

0 голосов
/ 03 декабря 2010

Быстрый вопрос.У меня есть система паролей в моем приложении, и я хочу дать возможность «заблокировать» приложение, если введено слишком много неправильных паролей.Я легко могу сделать это, имея UISwitch, который устанавливает какой-то ключ по умолчанию, который переключает другой набор ключей, который блокирует приложение.Извините, если это сбивает с толку, но реальный вопрос у меня такой, если я делаю что-то вроде:

// in the failure function
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"appIsLocked"];

// in didFinishLaunching
if( ![[NSUserDefaults standardUserDefaults] boolForKey:@"appIsLocked"] )
{
  // launch normally
}

Во-первых, если пользователь удаляет приложение, затем переустанавливает его, скажем из iTunes, будут ли userDefaultsсброс?Например, будет ли приложение автоматически разблокировано?И, во-вторых, как яблоко относится ко мне, просто выходя из приложения, если оно заблокировано?Это возможно?Или, если я просто покажу экран, который говорит, что он заблокирован, пожалуйста, переустановите.Есть ли функция, которая вызывается, когда пользователь удаляет приложение, в котором я могу запустить очистку?

Спасибо, и извините, если вопрос слишком бессмысленный.

Ответы [ 4 ]

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

Насколько я знаю, нет способа выйти из приложения.Вызов exit () обычно приводит к отказу.Apple, в частности, так говорит здесь: http://developer.apple.com/library/ios/#qa/qa2008/qa1561.html

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

С другой стороны, переустановка приложения разблокируетэто, пользовательские настройки будут удалены, как сказал ранее Antwan.

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

На самом деле не желательно выходить из приложения программно. Вы должны заблокировать пользователя с помощью View, предназначенного для информирования пользователя о том, что он заблокирован.

Кроме того, пользовательские настройки по умолчанию для любого приложения удаляются при удалении приложения с устройства. Единственный способ иметь постоянную блокировку - это хранить информацию о блокировке удаленно, как на одном из ваших серверов (в этом случае строго учитывайте практичность).

Подсказка: хешируйте пароль, не храните его в виде открытого текста и сравните хэши.

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

Пользовательские ошибки находятся внутри пакета приложения и поэтому будут удалены. Я думаю, что Apple утвердит ваше приложение при отображении окна «Вы не можете использовать это приложение» при выходе. Имейте в виду, что действительно легко редактировать пользовательские настройки по умолчанию, когда устройство iOS взломано, и поэтому сохранение его в пользовательских настройках по умолчанию не является хорошим способом обеспечения его безопасности.

0 голосов
/ 31 марта 2012

Хотя это настоятельно не рекомендуется из-за того, что пользователю кажется, что приложение аварийно завершилось, вы все равно можете использовать функцию exit();. Я не знал, что это обескураживало, и то, как я его использовал, я анимировал, чтобы мое приложение исчезло на черном экране, и когда анимация закончилась, он вышел из приложения. Такой подход не выглядел так, как будто приложение рухнуло для пользователя.

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

exit(0);
...