【发布时间】:2016-10-26 08:42:34
【问题描述】:
我想创建一个通用类来检查互联网连接,它也应该在互联网改变状态时通知我。
我正在使用 AFNetworking 来检查互联网状态。
这是我尝试过的代码,但它不起作用请帮助我在哪里犯错??
CheckInternet 是我从NSObject 派生的通用类
CheckInternet.h
#import <Foundation/Foundation.h>
@interface CheckInternet : NSObject
+ (void)startNetworkMonitoring;
+ (BOOL)isInternetConnectionAvailable;
@end
CheckInternet.m
#import "CheckInternet.h"
#import "AFNetworking.h"
@implementation CheckInternet
+ (void)startNetworkMonitoring
{
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
// Check the reachability status and show an alert if the internet connection is not available
switch (status) {
case -1:
// AFNetworkReachabilityStatusUnknown = -1,
NSLog(@"The reachability status is Unknown");
break;
case 0:
// AFNetworkReachabilityStatusNotReachable = 0
NSLog(@"The reachability status is not reachable");
break;
case 1:
NSLog(@"The reachability status is reachable via wan");
[[NSNotificationCenter defaultCenter] postNotificationName:@"reachabilityChanged" object:nil];
break;
case 2:
// AFNetworkReachabilityStatusReachableViaWiFi = 2
NSLog(@"The reachability status is reachable via WiFi");
[[NSNotificationCenter defaultCenter] postNotificationName:@"reachabilityChanged" object:nil];
break;
default:
break;
}
}];
}
#pragma mark - Check Internet Network Status
+ (BOOL)isInternetConnectionAvailable {
return [AFNetworkReachabilityManager sharedManager].reachable;
}
@end
在我的ViewController.m(这里我想查看互联网状态)
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[CheckInternet startNetworkMonitoring];
if ([CheckInternet isInternetConnectionAvailable])
{
NSLog(@"---- Internet YES------ ");
}
else
{
NSLog(@"----- Internet NO------ ");
}
}
//This is not called...
- (void)reachabilityChanged:(NSNotification *)notification
{
NSLog(@"---- reachabilityChanged ----");
}
提前致谢!
【问题讨论】:
标签: ios iphone ipad afnetworking nsnotificationcenter