5

ユーザーがアクティブなインターネット接続を持っているかどうかを確認したいと思います。これが私がそれを実装した方法です。正常に動作しているように見えますが、問題は、wifiがオンまたはオフになっている場合でも、iPhoneシミュレーターに接続がない(uialertが表示される)ことを常に示していることです。私が間違っていることを知っている人はいますか?ご協力いただきありがとうございます!

Reachability *r= [Reachability reachabilityWithHostName:@"http://www.google.com"];
    NetworkStatus internetStatus= [r currentReachabilityStatus];

 if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN))
    {

        UIAlertView *alert= [[UIAlertView alloc] initWithTitle:@"No internet" message:@"No internet connection found. Please try again later"
                                                      delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
        [alert release];
    }

 else {

 // execute code in app

 }
4

2 に答える 2

6

これが私のアプリでのやり方です:

Reachability *reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus internetStatus = [reachability currentReachabilityStatus];

if(internetStatus == NotReachable) {
    UIAlertView *errorView;

    errorView = [[UIAlertView alloc]
                 initWithTitle: NSLocalizedString(@"Network error", @"Network error")
                 message: NSLocalizedString(@"No internet connection found, this application requires an internet connection to gather the data required.", @"Network error")
                 delegate: self
                 cancelButtonTitle: NSLocalizedString(@"Close", @"Network error") otherButtonTitles: nil];

    [errorView show];
    [errorView autorelease];
}

ドメインに到達できるかどうかではなく、インターネット接続をチェックします。インターネット接続(wifiまたはcelluar)がない場合は、UIAlertViewメッセージ(ローカライズ済み)が表示されます。

于 2011-10-02T21:02:11.467 に答える
0

チェックしないでください。無線は、到達可能性がネットワークを報告しない直後にオンになり、接続を確立し始めることがよくあります(ネットワークがないことを報告する到達可能性は、このプロセスを開始し、数秒後にそれ自体の答えを偽にする可能性があります)。

于 2011-10-03T04:49:07.683 に答える