我正在查看是否可以在iPhone上使用互联网连接。无论是WiFi还是EDGE或其他任何应用都无关紧要。确定iPhone互联网连接是否可用的最简单方法?
使用来自SeismicXML例子的代码似乎没有工作,从苹果的可达性的示例代码看起来矫枉过正的应用...
是否有一个快速简便的方法来确定对网络可用性苹果手机?
感谢, 本
我正在查看是否可以在iPhone上使用互联网连接。无论是WiFi还是EDGE或其他任何应用都无关紧要。确定iPhone互联网连接是否可用的最简单方法?
使用来自SeismicXML例子的代码似乎没有工作,从苹果的可达性的示例代码看起来矫枉过正的应用...
是否有一个快速简便的方法来确定对网络可用性苹果手机?
感谢, 本
我的第一个想法是看看我是否能连接到Google。
我想它打破了XCode一次试图将SystemConfiguration.framework复制......这里的人谁可能有兴趣的解决方案后...
添加SystemConfiguration.framework到您的项目,做一个#进口<SystemConfiguration/SystemConfiguration.h>,然后添加以下代码:
SCNetworkReachabilityFlags flags;
BOOL receivedFlags;
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(CFAllocatorGetDefault(), [@"google.com" UTF8String]);
receivedFlags = SCNetworkReachabilityGetFlags(reachability, &flags);
CFRelease(reachability);
if (!receivedFlags || (flags == 0))
{
// internet not available
} else {
// internet available
}
好了,希望这可以帮助别人呢......好像有一个应用程序被拒绝的常见方式...
您需要小心,假设标志== 0意味着您的应用程序可以使用的连接。如果您查看SCNetworkConnectionFlags的可能值,则不是所有这些值都意味着“可以立即访问Internet”(http://developer.apple.com/documentation/Networking/Reference/SysConfig/SCNetwork/CompositePage.html#//apple_ref/c/tag/SCNetworkConnectionFlags) Apple的Reachability示例更为准确。 – lfalin 2009-06-25 15:31:31
我将其Reachability示例中包括Apple的Reachability.h &.m以及上面提到的SystemConfiguration框架,然后将以下代码添加到我的应用程序中,该应用程序与上述答案相比具有两个优点 - 它为您提供了更多信息,并且您可以获得网络状态更改的异步通知。
在你的应用程序代理,或者类似的,当你启动补充一点:
[self startReachability];
然后添加这个方法,它被调用时,网络的变化:
#pragma mark Reachability changed
- (void)reachabilityChanged:(NSNotification*)aNote
{
self.remoteHostStatus = [[Reachability sharedReachability] remoteHostStatus];
switch (self.remoteHostStatus)
{
case NotReachable:
debugForComponent(kDebugMaskApp,@"Status changed - host not reachable");
break;
case ReachableViaCarrierDataNetwork:
debugForComponent(kDebugMaskApp,@"Status changed - host reachable via carrier");
break;
case ReachableViaWiFiNetwork:
debugForComponent(kDebugMaskApp,@"Status changed - host reachable via wifi");
break;
default:
debugForComponent(kDebugMaskApp,@"Status changed - some new network status");
break;
}
}
`[self startReachability]` - 这个方法在哪里定义? – 2011-12-05 21:22:22
这是你的问题的最快最简单的解决方案:
([NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"]]!=NULL)?YES:NO;
,如果是连接或NO
,如果它不是它将返回YES
。它只是试图加载谷歌,如果成功,它会返回YES
。
然后你可以有一个if
语句的返回值,这样你可以抛出一个通知或任何你喜欢的东西。
也是一种肮脏的方式。 – 2013-01-24 08:36:04
按照以下三个简单的步骤 -
第1步:在项目中包含
步骤2 “SystemConfiguration.framework” 框架:包括苹果的Reachability.h和可达性。m from Reachability示例
第3步:现在将此代码添加到.m的任何位置。
Reachability* wifiReach = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
NetworkStatus netStatus = [wifiReach currentReachabilityStatus];
switch (netStatus)
{
case NotReachable:
{
NSLog(@"Access Not Available");
break;
}
case ReachableViaWWAN:
{
NSLog(@"Reachable WWAN");
break;
}
case ReachableViaWiFi:
{
NSLog(@"Reachable WiFi");
break;
}
}
您是否找到了答案? – JoePasq 2010-06-28 17:30:57
**一步一步的解决方案** 请参阅:http://stackoverflow.com/a/25498693/2459296 – Salim 2014-08-26 05:36:22