уведомление iPhone при первом запуске приложения - PullRequest
2 голосов
/ 17 января 2011

Я хочу, чтобы пользователь принял соглашение до запуска приложения.Итак, в 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 ]

4 голосов
/ 17 января 2011

Да, Apple отклонит ваше приложение, если вы заставите выйти.Я могу сказать ;-) Другой UIAlertView, говорящий, что пользователь не может продолжить, не принимая его, должен разобраться (просто не нажимайте на него никакие кнопки, чтобы пользователь не мог отклонить его)

Об остальном объеме,через него не проходит, или UIAlertView не показывает?Проверьте это с точкой останова.Более того, это не когда (buttonIndex == 0) означает, что пользователь коснулся кнопки «Отмена»

2 голосов
/ 17 января 2011

Я успешно использовал этот метод делегата:

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

И убедитесь, что ваше приложение использует свойства cancelButtonIndex и firstOtherButtonIndex элемента alertView, чтобы вы обрабатывали правильную кнопку;Я думаю, что кнопка отмены обычно в данный момент имеет нулевой индекс, но это может измениться.

1 голос
/ 18 января 2011

Рекомендуемый способ обработки лицензионного соглашения заключается в том, чтобы отправить его при подаче заявки в iTunes. Это позволяет конечному пользователю прочитать лицензионное соглашение до загрузки приложения.

Если вы хотите заставить пользователя принять лицензионное соглашение до использования приложения, вам, вероятно, следует поместить соглашение в файл HTML, который вы можете встроить в приложение. Отображать HTML-код в UIWebView при запуске приложения. (Всего несколько строк кода.) Не пытайтесь втиснуть его в предупреждение.

Вам не разрешено «выходить» из приложения. Вы можете представить Лицензионное соглашение в веб-просмотре с параметрами «Принять» и «Отклонить» на панели инструментов или в виде кнопок на веб-странице. Если пользователь выбирает «Отклонить», вы можете выдать предупреждение с просьбой удалить приложение со своего устройства. Идея в том, что они могут прокручивать веб-просмотр, но не продолжать, пока не нажмут "Принять".

Я не уверен, что Apple разрешит это, это наверняка расстроит ваших конечных пользователей.

0 голосов
/ 17 января 2011

для проблемы номер два: да, Apple не хочет выходить из приложения.Но что вы можете сделать, чтобы заставить пользователя выйти из приложения самостоятельно: просто показать пустой экран.Но я не уверен, что Apple разрешит даже это, потому что это можно рассматривать как «отсутствие функциональности».

...