App中判断网络状态的3种方法
来源:互联网 发布:medibang paint知乎 编辑:程序博客网 时间:2024/06/10 07:36
第一种:
1。
- (void)viewDidLoad {
[superviewDidLoad];
[self.navigationControllersetNavigationBarHidden:NO];
self.navigationItem.title =@"";
ud = [NSUserDefaultsstandardUserDefaults];
NSDictionary *attributes=[NSDictionarydictionaryWithObjectsAndKeys:[UIColorwhiteColor],NSForegroundColorAttributeName,nil];
[self.navigationController.navigationBarsetTitleTextAttributes:attributes];
self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:245/255.0green:118/255.0blue:147/255.0alpha:1];
UIBarButtonItem *leftBarItem = [[UIBarButtonItemalloc]initWithTitle:@""style:UIBarButtonItemStylePlaintarget:selfaction:nil];
self.navigationItem.leftBarButtonItem = leftBarItem;
[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(reachabilityChanged:)name:kReachabilityChangedNotificationobject:nil];
Reachability *hostReach = [ReachabilityreachabilityWithHostName:@"www.apple.com"];
[hostReach startNotifier];
}
-(void)reachabilityChanged:(NSNotification *)notification{
Reachability *reach = [notification object];
if ([reach isKindOfClass:[Reachabilityclass]]) {
NetworkStatus status= [reach currentReachabilityStatus];
if (status == NotReachable) {
NSLog(@"没网络");
}else if (status ==ReachableViaWiFi){
NSLog(@"WI-FI");
}else if (status ==ReachableViaWWAN){
NSLog(@"4G");
}
}
}
- (void)dealloc
{
[[NSNotificationCenterdefaultCenter]removeObserver:selfname:kReachabilityChangedNotificationobject:nil];
}
2.第二种
- (void)viewDidLoad {
[super viewDidLoad];
[self isConnectionAvailable];
}
-(BOOL) isConnectionAvailable{
BOOL isExistenceNetwork = YES;
Reachability *reach = [ReachabilityreachabilityWithHostName:@"www.apple.com"];
switch ([reachcurrentReachabilityStatus]) {
caseNotReachable:
isExistenceNetwork = NO;
//NSLog(@"notReachable");
break;
caseReachableViaWiFi:
isExistenceNetwork = YES;
//NSLog(@"WIFI");
break;
caseReachableViaWWAN:
isExistenceNetwork = YES;
//NSLog(@"3G");
break;
}
if (!isExistenceNetwork) {
NSLog(@"断网");
[ud setObject:@"noNet"forKey:@"net"];
}else{
[ud setObject:@"hasNet"forKey:@"net"];
}
return isExistenceNetwork;
}
第三种:使用AFN
//在网络切换时,如果没登陆就执行自动登录
AFNetworkReachabilityManager *manger = [AFNetworkReachabilityManagersharedManager];
[manger setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
caseAFNetworkReachabilityStatusUnknown:
// NSLog(@"未知");
break;
caseAFNetworkReachabilityStatusNotReachable:
// NSLog(@"没有网络");
break;
caseAFNetworkReachabilityStatusReachableViaWWAN:
// NSLog(@"3G|4G");
// break;
caseAFNetworkReachabilityStatusReachableViaWiFi:
{
// NSLog(@"WiFi");
//调用接口获取用户个人信息。如果可以获取到,则说明登录为超时。如果未获取到分为两种情况,第一种,已经登录过。第二种情况未登录过
// [self checkUserStatus];
if (!IS_LOGIN) {
[selfautoLogin];
}
if (!_isInBackground) {
[selfapplicationDidBecomeActive:[UIApplicationsharedApplication]];
}
}
break;
default:
break;
}
}];
- App中判断网络状态的3种方法
- iOS中判断网络的状态的几种方法
- 判断网络状态的方法
- C#中判断系统的网络连接状态的方法
- Android中监听判断网络连接状态的方法
- Android中监听判断网络连接状态的方法
- 使用JS在浏览器中判断当前网络连接状态的几种方法
- iOS 判断网络连接状态的几种方法
- iOS 判断网络连接状态的几种方法
- iOS 判断网络连接状态的几种方法
- iOS 判断当前网络状态的三种方法
- 判断网络连接状态的方法
- APP的状态判断
- C#中判断网络连接的状态
- C#中判断网络连接的状态
- C#中判断网络连接的状态
- 判断设备和判断网络连接状态的方法
- 网络状态的判断
- Windows下重置MySQL的root密码
- Spring Boot 教程(四) -- 开发 Web 应用
- Hive安装
- maven+eclipse 问题记录
- 杭电5522Numbers
- App中判断网络状态的3种方法
- Oracle Study之-AIX6.1构建Oracle 11gR2 RAC(1)
- NoSQL数据库:MongoDB与Hbase的区别
- Spring Boot 教程(五)-- 生产环境运维支持
- 【BZOJ2718】[Violet 4]毕业旅行【最长反链】【传递闭包】
- angularjs 中 filter 过滤 orderBy排序 手机端自适应js
- 基于FPGA的虚拟现实定位系统设计
- 内联函数
- 从NSString中提取数字 NSScanner