iPhone通知第一次启动应用程序

时间:2011-01-17 20:23:54

标签: iphone notifications uiapplicationdelegate

我希望用户在启动应用程序之前接受协议。所以在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不希望您强制关闭应用程序。那是对的吗?我应该怎么做呢?感谢您的所有帮助。

4 个答案:

答案 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是否会允许它,因为它可能被视为“没有功能”。