2011-01-17 12 views
2

私は、アプリケーションが起動する前に契約を受け入れることを希望しています。だから、appDelegate.mに私は、次があります。アプリが初めて起動されたときのiPhoneの通知

- (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]; 
    } 

} 

一つの問題は、ユーザーのヒットをキャンセルする場合、他と呼ばれることは決してありませんということです。もう1つの問題は、アプリの継続を止める方法がわからないことです。私が見つけたことから、Appleはあなたにアプリケーションを強制終了させたくありません。あれは正しいですか?これを実装するにはどうすればいいですか?あなたの助けをありがとう。

答えて

4

はい、強制終了すると、アップルはアプリケーションを拒否します。私は言うことができます;-)別のUIAlertViewは、ユーザが受け入れずに続行できないと言っています(ユーザがそれを却下できないようにボタンを置かないでください)

elseスコープについては、それを通過しない、またはUIAlertViewが表示されません?ブレークポイントで確認してください。

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

をそして、あなたのアプリケーションがcancelButtonIndexとfirstOtherButtonIndexを使用していることを確認してください:(buttonIndex == 0)はユーザーではなく、このデリゲートメソッドを使用して、私は成功を収めている

+0

返事をありがとう。あなたは正しいです、キャンセルボタンはインデックス0にあります。ユーザーがキャンセルを押すと別のalertView(ボタンなし)を表示しただけで、Appleはそれを受け入れますか? – Brian

+0

私は、Appleが特定の条件を受け入れることなく役に立たないアプリを嫌に思うだろうと推測します。 – kubi

+0

+17の定格アプリや一部のウェブブラウザはどうですか?ユーザーは強制的に条件に同意する必要があります。それは本質的に私が何をしようとしているのです。 – Brian

0

問題番号2の場合:はいAppleはアプリを終了したくありません。しかし、ユーザーが強制的にアプリを終了させるためにできることは、単に空白の画面を表示することです。しかし、Appleがこれを許可するのかどうかは、「機能がない」とみなされる可能性があるため、わからない。

+0

返信いただきありがとうございます。私はユーザーがOKを押すまで待つキャンセルをヒットした後、別の画面を作成することができると思います。しかし、私がキャンセルを押したときに第二の警告が表示されない理由を知っていますか? – Brian

2

「キャンセル」ボタンに触れたことを意味したときにさらに多くの、ではありませんalertViewのプロパティを使用して、正しいボタンを処理します。私は、キャンセルボタンは通常現在インデックスゼロであると思うが、これは潜在的に変化する可能性がある。

1

EULAを処理するための推奨される方法は、アプリケーションをiTunesに送信する際に提出することです。これにより、エンドユーザーはアプリケーションをダウンロードする前にEULAを読むことができます。

ユーザーがアプリケーションを使用する前にEULAを受け入れるようにするには、アプリケーション内に埋め込むことのできるHTMLファイルに同意書を入れてください。あなたのアプリケーションが起動すると、UIWebViewにHTMLを表示します。 (ほんの数行のコードです)警告に絞ってはいけません。

アプリケーションを「終了」することはできません。 EULAをツールバーの「承諾」および「拒否」オプションまたはWebページのボタンとしてWebビューに表示したい場合があります。ユーザーが[拒否]を選択すると、デバイスからアプリを削除するよう警告する警告が表示されることがあります。アイデアは、彼らはwebviewの周りをスクロールすることができますが、彼らは受け入れを押すまで続けることができます。

Appleがこれを許可するかどうかはわかりませんが、確かにあなたのエンドユーザーを苛立たせるでしょう。

+0

彼らは許可します。 Soft PauerのF1タイミングアプリなど、すでにこれを行うアプリがいくつかあります。 –

関連する問題