2010-12-03 5 views
0

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

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

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

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

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

ответ

1

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

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

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

1

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

+0

Ну, я сохраняю код доступа в цепочке ключей, должен ли я попытаться также сохранить заблокированный флаг? – Josh 2010-12-03 17:06:51

1

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

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

Protip: hash код доступа, не храните его в открытом виде и сравнивайте хеши.

0

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

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

exit(0); 
Смежные вопросы