iOS-可访问性不工作
我正在使用这个库: 有时,当我检查以下表达式时,会出现问题:iOS-可访问性不工作,ios,reachability,Ios,Reachability,我正在使用这个库: 有时,当我检查以下表达式时,会出现问题: [[ReachabilityManager sharedManager]可访问性]是可访问的]返回否何时应为是。我知道有互联网,因为我同时调用Rest服务 另外,如果我执行[Reachability Reachability with hostname:@“www.google.com”]并请求方法isReachable然后按我的预期工作 我的测试很简单,在emulator上试用,然后拔下以太网电缆 @implementation R
[[ReachabilityManager sharedManager]可访问性]是可访问的]
返回否
何时应为是
。我知道有互联网,因为我同时调用Rest服务
另外,如果我执行[Reachability Reachability with hostname:@“www.google.com”]
并请求方法isReachable
然后按我的预期工作
我的测试很简单,在emulator上试用,然后拔下以太网电缆
@implementation ReachabilityManager
#pragma mark -
#pragma mark Default Manager
+ (ReachabilityManager *)sharedManager {
static ReachabilityManager *_sharedManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedManager = [[self alloc] init];
});
return _sharedManager;
}
#pragma mark -
#pragma mark Memory Management
- (void)dealloc {
// Stop Notifier
if (_reachability) {
[_reachability stopNotifier];
}
}
#pragma mark -
#pragma mark Class Methods
+ (BOOL)isReachable {
return [[[ReachabilityManager sharedManager] reachability] isReachable];
}
+ (BOOL)isUnreachable {
return ![[[ReachabilityManager sharedManager] reachability] isReachable];
}
+ (BOOL)isReachableViaWWAN {
return [[[ReachabilityManager sharedManager] reachability] isReachableViaWWAN];
}
+ (BOOL)isReachableViaWiFi {
return [[[ReachabilityManager sharedManager] reachability] isReachableViaWiFi];
}
#pragma mark -
#pragma mark Private Initialization
- (id)init {
self = [super init];
if (self) {
// Initialize Reachability
self.reachability = [Reachability reachabilityWithHostname:@"www.google.com"];
// Start Monitoring
[self.reachability startNotifier];
}
return self;
}
@end
宣布一个布尔
BOOL _isInternetAvaliable;
在你的可达性中
-(void) initializeReachability {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
//hostReachability
NSString *remoteHostName = @"www.apple.com";
self.hostReachability = [Reachability reachabilityWithHostName:remoteHostName];
[self.hostReachability startNotifier];
[self updateInterfaceWithReachability:self.hostReachability];
//internetReachability
self.internetReachability = [Reachability reachabilityForInternetConnection];
[self.internetReachability startNotifier];
[self updateInterfaceWithReachability:self.internetReachability];
//wifiReachability
self.wifiReachability = [Reachability reachabilityForLocalWiFi];
[self.wifiReachability startNotifier];
[self updateInterfaceWithReachability:self.wifiReachability];
}
- (void)updateInterfaceWithReachability:(Reachability *)reachability
{
if (reachability == self.hostReachability)
{
[self configurereachability:reachability];
}
if (reachability == self.internetReachability)
{
[self configurereachability:reachability];
}
if (reachability == self.wifiReachability)
{
[self configurereachability:reachability];
}
}
- (void)configurereachability:(Reachability *)reachability
{
NetworkStatus netStatus = [reachability currentReachabilityStatus];
BOOL connectionRequired = [reachability connectionRequired];
switch (netStatus)
{
case NotReachable: {
_isInternetAvaliable = NO;
break;
}
case ReachableViaWWAN: {
_isInternetAvaliable = YES;
break;
}
case ReachableViaWiFi: {
_isInternetAvaliable = YES;
break;
}
}
if (connectionRequired)
{
_isInternetAvaliable = NO;
}
}
-(BOOL) isInternetAvailable {
return _isInternetAvaliable;
}
现在您已准备好呼叫并访问internet状态
if([[ReachabilityManager sharedManager] isInternetAvailable]){
//Internet on
}
最后我找到了一个可靠的解决方案 尝试使用apple的可达性类,您可以下载源代码,您只是在检查主机可达性,对吗?我想测试internet连接。我已经添加了工作代码,请将其添加到您的类中并检查。[[ReachabilityManager sharedManager]isInternetAvailable]此代码始终返回YES。我已再次检查了我的代码在我的项目中是否正常工作,检查您是否未连接到任何Wifi或WAN网络。调试
配置可达性:
方法,如果您没有以任何方式连接到internetnetStatus
应获得不可访问
&它应返回NOI。我可以上传摘要以查看我对您代码的改编。在我看来这很好,但很奇怪为什么总是返回yes。我直接从appDelegate调用InitializeRachability
方法,并使用选项完成启动:方法[[ReachabilityManager sharedManager]InitializeRachability]代码>
if([[ReachabilityManager sharedManager] isInternetAvailable]){
//Internet on
}