2011-08-18 196 views
1

我检查从苹果使用这个例子中,网络连接:如何检查网络更改iphone

- (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

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

关于第二个问题(再次,我不明白这背后的原因),我不认为会有一个回调,告诉你有关WIFI转换到3G。当然,你将不得不继续投票。请重复调用checkNetworkStatus并查看哪些情况得到满足。

+0

我没有发件箱,因为我使用SKPSMTPMessage发送电子邮件。 – madcoderz