应用程序如何了解iPhone中的互联网连接的可用性?

时间:2013-07-15 05:41:54

标签: ios nsnotificationcenter internet-connection

我是Iphone app开发的新手,所以我有几个问题。帮助我解决这个问题。

  

1)如何,iphone上的所有应用程序都会知道,当用户在设置中打开wifi按钮或手机按钮时,是否有可用的互联网连接?

  2)如何区分wifi连接和蜂窝连接?

  3)iphone中是否有类似于android概念的广播接收机制?

我搜索了许多用于互联网连接的链接,并了解了iPhone中的Reachibilty类,但我无法清楚地了解它是如何工作的?如果有任何一次可以给我链接,这可以解释我关于可达性的详细信息,那将是很棒的。或任何其他机制来实现上述功能。

我正在编写一个应用程序,我需要开始上传一些数据,当应用程序知道有可用的连接时,即使应用程序在后台或前台也应该发生这种情况。

提前致谢

3 个答案:

答案 0 :(得分:0)

您应该使用课程Reachability

 NetworkStatus netStatus = [curReach currentReachabilityStatus];

NSString* statusString= @"";
switch (netStatus)
{
    case NotReachable:
    {
        statusString = @"Access Not Available";

        //Minor interface detail- connectionRequired may return yes, even when the host is unreachable.  We cover that up here...

        break;
    }

    case ReachableViaWWAN:
    {
        statusString = @"Reachable WWAN";

        break;
    }
    case ReachableViaWiFi:
    {
         statusString= @"Reachable WiFi";

        break;
  }
}

[[Reachability reachabilityForInternetConnection] startNotifier];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(someMethod:) name:kReachabilityChangedNotification object:nil];

答案 1 :(得分:0)

尝试使用此示例代码Sample
https://github.com/tonymillion/Reachability

它还可以让您检查WiFi是否已启用:

Reachability* reachability = [Reachability sharedReachability];
[reachability setHostName:@"www.google.com"];    // set your host name here
NetworkStatus remoteHostStatus = [reachability remoteHostStatus];

if(remoteHostStatus == NotReachable) { }
else if (remoteHostStatus == ReachableViaWiFiNetwork) { }
else if (remoteHostStatus == ReachableViaCarrierDataNetwork) { }

答案 2 :(得分:0)

您可以为此link

中提供的内容使用Reachability类

也会通过此链接,这将有助于您确定。

How to check for an active Internet connection on iOS or OSX?

或这个简单的代码行也很有用

Reachability *reachability = [Reachability reachabilityForInternetConnection];   
NetworkStatus networkStatus = [reachability currentReachabilityStatus];    
if (networkStatus == NotReachable) {        
    NSLog(@"There IS NO internet connection");        
} else {        

     NSLog(@"There IS internet connection");        


    }        
}