2011-12-28 12 views
3

私のiPhoneアプリは機能するにはインターネットが必要です。いつインターネット接続を確認する必要があります

インターネット機能が実行されるたびに接続性をチェックする必要がありますか? また、私のappDelegateを使用して、到達可能性クラスのようなものからのメッセージをリッスンして、接続が失われたかどうかを判断し、ユーザーに警告する必要がありますか?

何が良いですか?ここで

は、私は私のアプリデリゲートで、これまで何をやったかです:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 


    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil]; 

    reachability = [[Reachability reachabilityWithHostName:[NSString stringWithFormat:@"http://%@/iSql/" ,[[NSUserDefaults standardUserDefaults] stringForKey:@"serviceIPAddress"]]] retain]; 

    [reachability startNotifier]; 

    return YES; 
} 

- (void)reachabilityChanged:(NSNotification *)note { 

    NetworkStatus ns = [(Reachability *)[note object] currentReachabilityStatus]; 

    if (ns == NotReachable) { 

     if (![networkAlert isVisible]) { 

      if ([self networkAlert] == nil) { 
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"\n\nNo Internet Connection" message:@"You require an internet connection to retrieve data from the server." delegate:nil cancelButtonTitle:nil otherButtonTitles:nil]; 
       [self setNetworkAlert:alert]; 
       [alert release]; 
      } 

      [networkAlert show]; 
     } 
    } else { 

     if ([self networkAlert] != nil) { 
      [networkAlert dismissWithClickedButtonIndex:0 animated:YES]; 
     } 

    } 
} 

答えて

4

少なくとも1アップルハイテクトークプレゼンターは、ちょうどあなたの非同期ネットワーク要求をオフに発射、ほとんどの場合、到達可能性をチェックする(活動の指標のいくつかのタイプを経由して)、ユーザに通知することをお勧めできないアプリUIやアプリをロックするのではなく、ネットワークの応答を待っていて、十分に待っていると思った場合にユーザーにオプションを与えることです。

移動するモバイルデバイスでは、ネットワークが到達可能性テストと実際のデータ要求の間で頻繁に行き来することがあります。したがって、ユーザーは誤った情報になります。接続性があることをユーザに知らせた後でも、ネットがダウンする可能性があります。これはさらに悪化する可能性があります。

プラス到達可能性は、インターネットまたは他のサイトや接続先サイトへの接続を提供する場合としない場合がある最も近い/最初のネットワークホップの接続性についてのみ示します。一般的な例は、誤って設定されたWIFIアクセスポイントのすべてである可能性があります。

長時間待ってからユーザーにオプションを与えないと、拒否の理由がある可能性があります。が最初に到達可能性をチェックしているかどうか。

+0

私はこの答えが好きです - 私はこれが推奨されているAppleと同様の技術話をしていました。私は、必ずしも私の意見ではあまり親切ではない、別の答えごとに 'UIAlertView'を使ってアプリケーション全体をブロックすることを推奨するとは限りません! – lxt

2

それは本当にあなたのアプリケーションに依存します。両方を行うことができます:インターネットが利用できないときに機能を無効にし、ユーザーに通知します。

私は、接続が接続を必要とする方法をオフに発射する前に存在していることを確認してください、インターネットに接続していない時にUIを変更することを好むと。

0

私はお勧め:

1)前に、必ずすべてのインターネット要求を行うにはインターネット接続を確認し、適切な取り扱い。 2)到達可能性をチェックするポーリングメカニズムがあります。到達できない場合は、おそらくユーザーに警告し、インターネット要求を行うプログラムの一部を無効にします。たぶんそれを「オフラインモード」と呼んでください。

+0

私のアプリは無関係で接続していないという問題があります。私はむしろappDelegateからアプリを無効にする方法を持っています...たぶん私は、ボタンなしで通知を提示し、ネットワークが戻っているときにそれを削除することができます... – Hackmodford

+0

すべての設定は、電話設定のアプリケーションで処理されます。今私の問題は、表示されたアラートを却下する方法です。警告は表示された後に解放されるためです。 – Hackmodford

+0

アプリが完全に役に立たないためネットワークがない場合はすべてのユーザーのやりとりを停止したいので... uialertviewは完璧です! – Hackmodford

関連する問題