1

ここでは、インターネット接続が利用可能であることを確認する方法の例をたくさん見てきましたが、一度利用可能になった場合に何かを行うためのベストプラクティスの方法を誰も説明していないようです.

Tony Million の Reachability クラスを使用しており、接続が利用可能になるとブール値 (オンライン) を true に設定する「接続が利用可能」ブロックがあります。Reachability クラスはアプリ デリゲート didFinishLaunchingWithOptions で初期化されますが、コードが Online Reachability のステータスをチェックするまでに、接続があるかどうかの判断が完了していないため、アプリは最初の起動時に常にオフラインであると見なされます。

これで、接続を必要とするコードを「接続可能」ブロックに入れることができましたが、アプリがインターネットを必要とする場所が複数あるため、明らかに私のニーズに対して十分な柔軟性がありません。

私がこれまでに持っていた「最良の」アイデアは、インターネットを必要とするメソッドを配列に入力し、接続があることを認識したら、その配列にあるものをReachabilityに実行させることです...しかし、私は問題を複雑にしすぎていますか?ここ?これについてもっと良い方法はありますか?

4

1 に答える 1

2

これはおおまかにあなたの「最良のアイデア」に基づいています。Tony Million's ReachabilityNSNotificationCenterは、インターネット接続が変更されたときにも通知を投稿します。インターネット接続が利用可能になったときに何かを行う必要があるすべてのクラスは、この通知に登録する必要があります。

GitHub ページにその例があります: https://github.com/tonymillion/Reachability#another-simple-example

今と同じように、アプリ デリゲートで Reachability クラスを初期化します。そして、他のクラスは、初期化子で を使用してkReachabilityChangedNotification通知を登録NSNotificationCenterします。またNSNotificationCenter、dealloc メソッドで から登録を解除する必要があります。

出発点として使用できるコードを次に示します。

- (void)registerForReachabilityNotification
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(reachabilityChanged:)
                                                 name:kReachabilityChangedNotification
                                               object:nil];
}

- (void)deregisterFromNotifications
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)reachabilityChanged:(NSNotification *)notification
{
    Reachability *reachability = notification.object;
    switch ([reachability currentReachabilityStatus]) {
        case NotReachable:
            // No connection
            break;
        case ReachableViaWiFi:
        case ReachableViaWWAN:
            // Connection available
            break;
    }
}
于 2013-07-13T16:08:04.657 に答える