我想使用SystemConfiguration或CFNetwork来检查互联网是否已连接,我不太确定是哪一个。
然后我想知道如果连接互联网,那么它是否通过wifi连接。
我尝试了一个例子,其中我使用了下面的代码
-(IBAction) shownetworkStatus { NSString *str = @"http://www.google.com"; NSURL *url = [NSURL URLWithString:str]; NSURLRequest *req = [NSURLRequest requestWithURL:url]; if (req!=NULL) { lbl.text = @"Connected"; } else { lbl.text = @"notConnected"; } }
有人说它根据苹果无效,你必须使用SystemConfiguration Framework,请告诉我需要做什么。
另外我个人认为我在上面的代码中所做的并不恰当,好像有一天谷歌也可能由于维护或其他因素而失败。
另外,如果你能给我一个链接,我可以显示WIFI网络的名称,那么它真的很酷。
我搜索了互联网,然后我得到了这些Reachability.h代码,这又是一个保镖,因为我学习概念而不是复制粘贴它们
谢谢和问候
答案 0 :(得分:1)
在Raxit提到的基础上,我使用以下代码(从Raxit提到的可访问性示例中提取)来检查我的应用程序委托中的Internet访问:
- (BOOL)isReachableWithoutRequiringConnection:(SCNetworkReachabilityFlags)flags
{
BOOL isReachable = flags & kSCNetworkReachabilityFlagsReachable;
BOOL noConnectionRequired = !(flags & kSCNetworkReachabilityFlagsConnectionRequired);
if ((flags & kSCNetworkReachabilityFlagsIsWWAN)) {
noConnectionRequired = YES;
}
return (isReachable && noConnectionRequired) ? YES : NO;
}
- (BOOL)isHostReachable:(NSString *)host
{
if (!host || ![host length]) {
return NO;
}
SCNetworkReachabilityFlags flags;
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, [host UTF8String]);
BOOL gotFlags = SCNetworkReachabilityGetFlags(reachability, &flags);
CFRelease(reachability);
if (!gotFlags) {
return NO;
}
return [self isReachableWithoutRequiringConnection:flags];
}
- (BOOL)connectedToNetwork {
return [self isHostReachable:@"www.hostyoureallycareabouthavingaconnectionwith.com"];
}
答案 1 :(得分:0)
您可以使用Apple提供的可访问性代码。这是示例代码。你可以找到有关互联网连接的全部细节。这是链接http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html