<分区>
<分区>
大家。
您认为下面的代码适合检查 iOS 中的互联网连接吗?如果我保留它,会有什么问题吗?是不是太弱了? 到目前为止,它对我来说没有问题。你怎么认为? 谢谢。
stringToURL = [NSString [NSString stringWithFormat: @"http://www.mycompany.com/File.csv"];
url = [NSURL URLWithString:stringToURL];
NSError *error = nil;
content = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
if (error != nil) {
//Do something
} else {
//Keep running the app
}
最佳答案
使用以下代码检查互联网连接,
在.h
#import <Foundation/Foundation.h>
@interface NetworkConnectivity : NSObject
+ (BOOL)hasConnectivity;
@结束
在.m
#import "NetworkConnectivity.h"
#import <sys/socket.h>
#import <netinet/in.h>
#import <SystemConfiguration/SystemConfiguration.h>
@implementation NetworkConnectivity
+ (BOOL)hasConnectivity {
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*)&zeroAddress);
if(reachability != NULL) {
SCNetworkReachabilityFlags flags;
if (SCNetworkReachabilityGetFlags(reachability, &flags)) {
if ((flags & kSCNetworkReachabilityFlagsReachable) == 0)
{
// if target host is not reachable
return NO;
}
if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0)
{
// if target host is reachable and no connection is required
// then we'll assume (for now) that your on Wi-Fi
return YES;
}
if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) ||
(flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0))
{
// ... and the connection is on-demand (or on-traffic) if the
// calling application is using the CFSocketStream or higher APIs
if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0)
{
// ... and no [user] intervention is needed
return YES;
}
}
if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)
{
// ... but WWAN connections are OK if the calling application
// is using the CFNetwork (CFSocketStream?) APIs.
return YES;
}
}
}
return NO;
}
@end
然后检查你想要的地方,
if ([NetworkConnectivity hasConnectivity]) {
// Internet available
} else {
// Internet not available
}
关于iphone - 互联网连接测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17056277/