快速提问。我的应用程序中有一个密码系统,如果输入了太多不正确的密码,我想提供“锁定”应用程序的选项。我可以轻松地做到这一点,通过让UISwitch设置一些默认密钥,可以切换另一个锁定应用程序的密钥集。很抱歉,如果这令人困惑,但我真正的问题是,如果我做了类似的事情:
// in the failure function
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"appIsLocked"];
// in didFinishLaunching
if( ![[NSUserDefaults standardUserDefaults] boolForKey:@"appIsLocked"] )
{
// launch normally
}
首先,如果用户删除应用程序,然后从iTunes重新安装它,是否会重置userDefaults?如此,应用程序是否会自动解锁?其次,如果苹果被锁定,苹果对我的感觉如何退出?那可能吗?或者,如果我只是显示一个屏幕上显示已锁定,请重新安装。是否有一个函数在用户卸载我可以运行清理的应用程序时被调用?
谢谢,如果问题太多,我很抱歉。
答案 0 :(得分:1)
用户默认位于应用包内,因此将被删除。 我认为苹果会在您退出时显示“您不被允许使用此应用程序”dailog时批准您的应用程序。 请记住,当iOS设备被越狱时,编辑用户默认值非常容易,因此将其保存在用户默认设置中并不是保护它的好方法。
答案 1 :(得分:1)
据我所知,没有办法实际退出应用程序。调用exit()通常会让你被拒绝。 Apple特此在此处这样说:http://developer.apple.com/library/ios/#qa/qa2008/qa1561.html
因此我不建议这样做,只需保持应用程序打开并将其锁定。
另一方面,重新安装应用程序将解锁它,用户默认值将被删除,如Antwan之前说的那样。
答案 2 :(得分:1)
以编程方式退出应用并不是首选。您应该使用专用于通知用户他们被锁定的视图来锁定用户。
此外,当从设备中删除应用程序时,将删除任何一个应用程序的用户默认值。持久锁定的唯一方法是远程存储锁定信息,例如在您的一台服务器上(在这种情况下考虑实用性)。
Protip:对密码进行哈希处理,不要将其存储在纯文本中,并比较哈希值。
答案 3 :(得分:0)
虽然强烈建议不要因为用户觉得应用程序已经崩溃,但您仍然可以使用函数exit();
。我不知道这是沮丧的,我使用它的方式是我动画我的应用程序淡入黑屏,一旦动画完成它退出应用程序。这种方法似乎并没有让应用程序崩溃给用户。
我目前在应用商店中有一个使用此功能的应用,因此您的应用可能会也可能不会被拒绝。如果您仍希望使用此退出应用程序的方法,请使用以下代码段。
exit(0);