如何检查网络改变iPhone

时间:2011-08-18 10:46:35

标签: iphone objective-c cocoa-touch

我正在使用Apple的这个示例检查网络连接:

- (void) checkNetworkStatus:(NSNotification *)notice
{
    // called after network status changes
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
    switch (internetStatus)
    {
        case NotReachable:
        {
            NSLog(@"The internet is down.");
            self.internetActive = NO;

            break;

        }
        case ReachableViaWiFi:
        {
            NSLog(@"The internet is working via WIFI.");
            self.internetActive = YES;

            break;

        }
        case ReachableViaWWAN:
        {
            NSLog(@"The internet is working via WWAN.");
            self.internetActive = YES;

            break;

        }
    }

    NetworkStatus hostStatus = [hostReachable currentReachabilityStatus];
    switch (hostStatus)
    {
        case NotReachable:
        {
            NSLog(@"A gateway to the host server is down.");
            self.hostActive = NO;

            break;

        }
        case ReachableViaWiFi:
        {
            NSLog(@"A gateway to the host server is working via WIFI.");
            self.hostActive = YES;

            break;

        }
        case ReachableViaWWAN:
        {
            NSLog(@"A gateway to the host server is working via WWAN.");
            self.hostActive = YES;

            break;

        }
    }
}

我的目的是首先检查是否存在连接,然后发送电子邮件。问题是,检查应用程序是否可以连接到主机需要很长时间,让我们说www.google.com需要几乎一分钟。有没有更快的方法来检查这个?

另一个问题是如何检查连接是否已从Wi-Fi更改为3G。

提前致谢!

1 个答案:

答案 0 :(得分:0)

为什么要在发送电子邮件之前确定互联网连接?如果在建立连接之前电子邮件位于发件箱中,会不会更好?这通常是电子邮件客户端的工作方式。即使您没有连接,Outlook或Gmail也不会阻止您按下发送按钮。在我见过的许多MFMailComposer实现中,我从未见过任何检查连接的人。

关于第二个问题(再次,我无法理解背后的原因),我认为不会有回调告诉你WIFI转换到3G。当然,你必须继续投票。继续调用checkNetworkStatus并查看哪种情况满意。