2

Wi-Fi接続が確立または切断されたときにiOSにアプリに通知させようとしています。

iOS 4.3.5 および 5.1 を搭載した iPhone および iPad で次のコードを試しました。

- (void)startWifiNotifier {
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(statusUpdated:) 
                                                 name:kReachabilityChangedNotification 
                                               object:nil];

    Reachability *wifi = [Reachability reachabilityForLocalWiFi];
    [wifi startNotifier];
    NSLog(@"Wifi status: %i", [wifi currentReachabilityStatus]);
    NSLog(@"Notifier started");
}

- (void)statusUpdated:(NSNotification *)notice {
    NetworkStatus s = [[notice object] currentReachabilityStatus];
    if(s == NotReachable) {
        NSLog(@"Wifi disconnected");
    } else {
        NSLog(@"Wifi connection established");
    }
}

問題は、コールバック「statusUpdated」が呼び出されないことです。これがそのまま機能する必要があることはわかっていますが、wifi範囲に出入りして(したがって、接続および切断され)、wifiルーターをオンまたはオフにして強制的に切断しようとしましたが、コールバックは呼び出されません。

私もこれを試しました:

@private
    Reachability *wifi;
...

- (void) startTimerLog {
   wifi = [Reachability reachabilityForLocalWiFi];
   [self timerLog];
}

- (void) timerLog {
    NSLog(@"Reachability: %i", [wifi currentReachabilityStatus]);
    [self performSelector:@selector(timerLog) withObject:nil afterDelay:0.5];    
}

同じシナリオでテストしたところ、正常に動作しました。ただし、それは私が必要とするアプローチではなく、コールバックを呼び出すための通知が必要です。

通知機能を機能させるために他に何かしなければならないことはありますか?

4

1 に答える 1

1

このライブラリhttp://huytd.github.io/datatify/を使用してください。使用とカスタマイズが非常に簡単です。setCallback メソッドは、接続がいつ変更されたかを検出するのに役立ちます

于 2013-08-31T16:51:57.963 に答える