我希望用户在启动应用程序之前接受协议。所以在appDelegate.m中我有以下内容:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
defaults = [NSUserDefaults standardUserDefaults];
if(![defaults boolForKey:@"warningAccepted"]){
UIAlertView *alert;
alert = [[[UIAlertView alloc] initWithTitle:@"Warning" message:@"Message... To continue, select \"OK\". To close the app, select \"Cancel\"." delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil] autorelease];
[alert show];
}
return YES;
}
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0){
[defaults setBool:YES forKey:@"warningAccepted"];
[defaults synchronize];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[window addSubview:mainNavController.view];
} else {
[window addSubview:tabBarController.view];
}
[window makeKeyAndVisible];
} else {
// Close App, User hit cancel.
UIAlertView *alert;
alert = [[[UIAlertView alloc] initWithTitle:@"App Cannot Continue" message:@"The application cannot run until warning is accepted." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil] autorelease];
[alert show];
}
}
一个问题是当用户点击取消时,else永远不会被调用。另一个问题是,我不确定如何阻止应用程序继续。根据我的发现,Apple不希望您强制关闭应用程序。那是对的吗?我应该怎么做呢?感谢您的所有帮助。
答案 0 :(得分:4)
是的,如果您强行退出,Apple将拒绝您的申请。我可以告诉;-)另一个UIAlertView说用户不能继续而不接受应该诀窍(只是不要在上面放任何按钮,这样用户就不能解雇它)
关于else范围,它是否通过它,或者UIAlertView没有显示?用断点检查它。此外,当(buttonIndex == 0)
表示用户触摸“取消”按钮
答案 1 :(得分:2)
我使用此委托方法取得了成功:
- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
确保您的应用程序使用alertView的cancelButtonIndex和firstOtherButtonIndex属性,以便您处理正确的按钮;我认为取消按钮目前通常是零指数,但这可能会发生变化。
答案 2 :(得分:1)
处理EULA的推荐方法是在向iTunes提交申请时提交。这允许最终用户在下载应用程序之前阅读EULA。
如果要在使用应用程序之前强制用户接受EULA,则应该将协议放入可以嵌入应用程序中的HTML文件中。当您的应用启动时,在UIWebView中显示HTML。 (只需几行代码。)不要试图将其挤入警报。
您不得“退出”该应用程序。您可能希望在工具栏中的“接受”和“拒绝”选项或网页上的按钮的Web视图中显示EULA。如果用户选择“拒绝”,则您可以弹出警报,然后要求从其设备中删除该应用。他们的想法是,他们可以滚动浏览网页视图,但在他们点击接受之前不会继续。
我不确定Apple是否允许这样做,这肯定会让最终用户感到沮丧。
答案 3 :(得分:0)
问题二:是的Apple不想退出应用程序。但是你可以做些什么来强迫用户自己退出应用程序:只需显示一个空白屏幕。但我不确定Apple是否会允许它,因为它可能被视为“没有功能”。