我希望确定iPhone上是否有互联网连接。对于应用程序来说无论是wifi还是EDGE或其他什么都无关紧要。
使用SeismicXML示例中的代码似乎不起作用,Apple的Reachability示例代码似乎对应用程序来说太过分了......
有没有一种快速简便的方法来确定iPhone上的网络可用性?
谢谢, 本
答案 0 :(得分:24)
遵循以下3个简单步骤 -
第1步:在项目中包含“SystemConfiguration.framework”框架
第2步:包含Apple的Reachability.h和Reachability.m来自可达性示例
第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;
}
}
答案 1 :(得分:9)
我收录了Apple的Reachability.h& .m来自他们的Reachability示例,加上上面提到的SystemConfiguration框架,然后将以下代码添加到我的应用程序中,这比上面的答案有两个优点 - 它为您提供了更多信息,并且您获得了网络状态更改的异步通知。 / p>
在您的app delegate或类似内容中,在启动时添加:
[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;
}
}
答案 2 :(得分:7)
我在尝试复制SystemConfiguration.framework后破解XCode后想出来......对于任何可能感兴趣的人来说,这是解决方案......
将SystemConfiguration.framework添加到项目中,执行#import< 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
}
嗯,希望这对任何人都有帮助......似乎是让应用程序被拒绝的常见方法......
答案 3 :(得分:5)
答案 4 :(得分:1)
这是解决问题的最快捷,最简单的方法:
([NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"]]!=NULL)?YES:NO;
如果已连接,则返回YES
,如果不连接,则返回NO
。它只是尝试加载谷歌,如果成功,则返回YES
。
然后你可以得到一个带有返回值的if
语句,这样你就可以发出通知或者你喜欢的任何内容。
答案 5 :(得分:0)
我的第一个想法是看看我是否可以连接谷歌。