首次启动应用程序时的 iPhone 通知

Posted

技术标签:

【中文标题】首次启动应用程序时的 iPhone 通知【英文标题】:iPhone notification the first time app is launched 【发布时间】:2011-01-17 20:23:54 【问题描述】:

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

【问题讨论】:

【参考方案1】:

是的,如果您强行退出,Apple 将拒绝您的申请。我可以告诉 ;-) 另一个 UIAlertView 说用户如果不接受就不能继续应该把戏(只是不要在上面放任何按钮,这样用户就不能关闭它)

关于 else 作用域,是没有通过它,还是 UIAlertView 不显示?用断点检查它。此外,(buttonIndex == 0) 不是表示用户触摸了“取消”按钮

【讨论】:

感谢您的回复。你是对的,取消按钮位于索引 0。如果我只显示另一个警报视图(没有按钮),如果用户点击取消,Apple 会接受吗? 我猜苹果会在不接受某些条款的情况下对无用的应用皱眉头。 +17 评级的应用程序甚至一些网络浏览器怎么样。他们强迫用户接受条款。这本质上就是我想要的。 您仍然可以循环:显示协议 -> 如果用户不接受它,则显示一个视图,说明他们需要接受协议(带有确定按钮)-> 如果用户触摸“ok” -> 返回显示协议,然后重新开始。在弹窗说“你需要接受协议”指定如果他们不接受,他们应该自己关闭应用程序......【参考方案2】:

我已经成功地使用了这个委托方法:

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex

并确保您的应用程序使用 alertView 的 cancelButtonIndex 和 firstOtherButtonIndex 属性,以便您处理正确的按钮;我认为取消按钮目前通常索引为零,但这可能会改变。

【讨论】:

【参考方案3】:

处理 EULA 的推荐方法是在您将应用程序提交到 iTunes 时提交。这允许最终用户在下载您的应用程序之前阅读 EULA。

如果您想强制用户在使用应用程序之前接受 EULA,您可能应该将协议放入一个 html 文件中,您可以将其嵌入到应用程序中。当您的应用启动时,在 UIWebView 中显示 HTML。 (只需几行代码。)不要试图将其挤进警报中。

您不能“退出”应用程序。您可能希望在 web 视图中使用工具栏中的“接受”和“拒绝”选项或网页上的按钮来呈现 EULA。如果用户选择“拒绝”,那么您可能会弹出一个警报,要求您从他们的设备中删除该应用程序。这个想法是他们可以在 webview 中滚动,但在他们点击接受之前不能继续。

我不确定 Apple 是否会允许这样做,这肯定会让您的最终用户感到沮丧。

【讨论】:

他们允许;已经有许多应用程序可以做到这一点,例如 Soft Pauer 的 F1 计时应用程序。【参考方案4】:

对于第二个问题:是的,Apple 不想退出该应用程序。但是你可以做些什么来强迫用户自己退出应用程序:简单地显示一个空白屏幕。但我不确定 Apple 是否会允许这样做,因为它可能被视为“没有功能”。

【讨论】:

感谢您的回复。我想我可以在用户点击取消后创建另一个屏幕,等待他们点击 OK。但是你知道为什么当我点击取消时我的第二个警报不会出现吗?

以上是关于首次启动应用程序时的 iPhone 通知的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 应用首次加载查询时的动画

在 ios 中下载应用程序时的通知

下载应用程序时的本地通知

iPhone CoreData 应用程序首次启动崩溃

iPhone 应用程序被拒绝:首次启动 iPad 上的屏幕变白

首次运行应用程序时的 Expo 问题