0

可能重复:
检查互联网连接 - iOS SDK

我正在寻找最快和最简单的方法来检查 iOS 中的连接。

我发现了这个:

-(BOOL)connectedToNetwork  {
    NSURL* url = [[NSURL alloc] initWithString:@"http://google.com/"];
    NSData* data = [NSData dataWithContentsOfURL:url];
    if (data != nil)
        return YES;
    return NO;
}

不知道有没有更简单的???

伙计们,感谢所有答案,但我正在寻找最简单、最轻便的解决方案,而不是最好的解决方案(即不需要区分 3G/Wi-Fi,我只是在寻找“是”/“否”的范围一个网站)

4

6 回答 6

4

看看Apple 提供的可达性示例。

您的方法可能遇到的问题是您可能会超时,因此某些数据的同步下载可能会阻止您的应用程序。因此,Apple 可能会拒绝您的应用。

可达性示例可按如下方式使用:

Reachability *_reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus remoteHostStatus = [_reachability currentReachabilityStatus];
if (remoteHostStatus == NotReachable) {
    // not reachable
} else if (remoteHostStatus == ReachableViaWiFi) {
    // reachable via Wifi
} else if (remoteHostStatus == ReachableViaWWAN) {
    // reachable via WWAN
}
于 2013-01-24T10:27:06.680 回答
2

我建议不要采用这种方法。由于这段代码,我的一个应用程序遭到拒绝。而是使用Apple 的可达性类。

于 2013-01-24T10:29:47.710 回答
2

使用此代码检查设备是否已连接到互联网

在 viewDidLoad 中使用此代码:

 Reachability* internetReachable; = [Reachability reachabilityForInternetConnection];
    [internetReachable startNotifier];

    hostReachable = [Reachability reachabilityWithHostName: @"www.apple.com"] ;
    [hostReachable startNotifier];

并将此函数添加到您的代码中:

-(void) checkNetworkStatus:(NSNotification *)notice
{
    recheabilityBool=FALSE;
    nonrecheabilityBool=FALSE;
    // called after network status changes
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
    switch (internetStatus)
    {
        case NotReachable:
        {
            nonrecheabilityBool=TRUE;
            internetCon=0;
            //NSLog(@"The internet is down.");


            break;
        }
        case ReachableViaWiFi:
        {
            NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
            internetCon=404;
            [prefs setInteger:internetCon forKey:@"conKey"];

            //NSLog(@"The internet is working via WIFI.");
            break;

        }
        case ReachableViaWWAN:
        {
            //NSLog(@"The internet is working via WWAN.");

            break;
        }
    }

    NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];
    switch (hostStatus)
    {
        case NotReachable:
        {
            internetCon=0;
            if( nonrecheabilityBool==FALSE)
            {
                //NSLog(@"A gateway to the host server is down.");
            }
            break;

        }
        case ReachableViaWiFi:
        {
            if(recheabilityBool==FALSE)
            {

                recheabilityBool=TRUE;

                NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
                internetCon=404;
                [prefs setInteger:internetCon forKey:@"conKey"];


                //NSLog(@"The internet is working via WIFI.");
                break;
            }


            //NSLog(@"A gateway to the host server is working via WIFI.");

            break;
        }
        case ReachableViaWWAN:
        {
            //NSLog(@"A gateway to the host server is working via WWAN.");
            break;
        }
    }
}


- (BOOL)connected
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus networkStatus = [reachability currentReachabilityStatus];
    return !(networkStatus == NotReachable);
}
于 2013-01-24T10:34:38.790 回答
1
Reachability* reachability = [Reachability sharedReachability];
[reachability setHostName:@"www.example.com"];    // set your host name here
NetworkStatus remoteHostStatus = [reachability remoteHostStatus];

如何在 iOS 或 OSX 上检查活动的 Internet 连接?

于 2013-01-24T10:34:02.370 回答
0

正如@who9vy 所说,使用可达性示例

将两个类 Reachability.h 和 Reachability.m 导入到您的项目中

使用方法检查 Internet 连接

- (BOOL)isConnectedToInternet
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection]; 
    NetworkStatus networkStatus = [reachability currentReachabilityStatus];
    return !(networkStatus == NotReachable);
}
于 2013-01-24T10:34:20.653 回答
0

检查可达性的最佳方法是 Apple Rechability 类

检查此链接

希望对你有帮助。。

于 2013-01-24T10:34:24.423 回答