我正在使用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。
提前致谢!
答案 0 :(得分:0)
为什么要在发送电子邮件之前确定互联网连接?如果在建立连接之前电子邮件位于发件箱中,会不会更好?这通常是电子邮件客户端的工作方式。即使您没有连接,Outlook或Gmail也不会阻止您按下发送按钮。在我见过的许多MFMailComposer
实现中,我从未见过任何检查连接的人。
关于第二个问题(再次,我无法理解背后的原因),我认为不会有回调告诉你WIFI转换到3G。当然,你必须继续投票。继续调用checkNetworkStatus并查看哪种情况满意。