1

私は iPad アプリケーションを開発しており、ユーザーがインターネットに接続できるかどうかを判断する最善の方法を見つけようとしています。ユーザーが接続していない場合は、キャッシュされたデータを読み込みます。それ以外の場合は、新しいデータを読み込みます。これに Apple の到達可能性クラスを使用しようとしていますが、これが正しく行われているかどうかを確認したかったのです。applicationDidFinishLaunchingWithOptions で、私はこれをやっています:

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

Reachability hostReach = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
[hostReach startNotifer];

次に、私の reachabilityChanged: は次のようになります。

- (void)reachabilityChanged:(NSNotification* )note {
    Reachability *curReach = [note object];
    self.internetConnectionStatus = [curReach currentReachabilityStatus];

    if (internetConnectionStatus == NotReachable) {
        [viewController getDataOffline];
    } else {
        if (![[NSUserDefaults standardUserDefaults] objectForKey:kFIRST_LAUNCH]) [viewController getCurrentLocation];
        else [viewController getData];
    }
}

現在、これは WiFi iPad で完全に機能しています。これが 3G iPad で動作することを確認したいだけです。私がこれを正しく行っているかどうか教えてください。

4

2 に答える 2

3

はい、到達可能性クラスは WiFi と 3G の両方を使用して、リモート ホストが到達可能かどうかを判断できます。

また、補足として、アプリケーションの起動時にキャッシュされたデータを常に表示し、バックグラウンドで新しいデータに非同期的に更新することを検討することをお勧めします。アプリケーションのコンテキストによっては、一部のデータが常に利用可能であるため、これによりユーザー エクスペリエンスが大幅に向上する可能性があります。

これについて詳しく知りたい場合は、「iPhone Advanced Projects」ブックに「Fake It 'Til You Make It: Tips and Tricks for Improving Interface Responsiveness」という素晴らしい章があります。

于 2010-04-15T15:26:28.970 に答える
1

はい、Reachability クラスは、任意のネットワーク メソッドを使用して到達できるかどうかを示します。

于 2010-04-15T13:28:58.203 に答える