gpt4 book ai didi

iOS 检测网络状态的两种方法

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章iOS 检测网络状态的两种方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

一般有两种方式,都是第三方的框架,轮子嘛,能用就先用着,后面再优化.

一:Reachability 。

1.首先在AppDelegate.h添加头文件"Reachability.h",导入框架SystemConfiguration.frame.

2. 在AppDelegate.m中这样实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//开启网络状况的监听
//来订阅实时的网络状态变化通知。导入Reachability.h头文件,然后注册一个对象来订阅网络状态变化的信息,网络状态变化的信息名称为kReachabilityChanged-Notification
[[NSNotificationCenter defaultCenter] addObserver:self selector: @selector (reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
//通过检查某个主机能否访问来判断当前网络是否可用:
self.hostReach = [Reachability reachabilityWithHostName:@ "www.baidu.com" ] ;
//开始监听,会启动一个run loop
[self.hostReach startNotifier];
}
-( void )reachabilityChanged:(NSNotification *)note{
Reachability *currReach = [note object];
NSParameterAssert([currReach isKindOfClass:[Reachability class ]]);
//对连接改变做出响应处理动作
NetworkStatus status = [currReach currentReachabilityStatus];
//如果没有连接到网络就弹出提醒实况
self.isReachable = YES;
if (status == NotReachable){
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@ "网络连接异常" message:nil delegate:nil cancelButtonTitle:@ "确定" otherButtonTitles:nil];
[alert show];
[alert release];
self.isReachable = NO;
return ;
}
if (status==kReachableViaWiFi||status==kReachableViaWWAN) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@ "网络连接信息" message:@ "网络连接正常" delegate:nil cancelButtonTitle:@ "确定" otherButtonTitles:nil];
// [alert show];
[alert release];
self.isReachable = YES;
}
}

然后在每个页面的viewWillAppear:加上:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
-( void )viewWillAppear:(BOOL)animated{
[ super viewWillAppear:YES];
AppDelegate *appDlg = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if (appDlg.isReachable){
NSLog(@ "网络已连接" ); //执行网络正常时的代码
}
else {
NSLog(@ "网络连接异常" ); //执行网络异常时的代码
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@ "网络连接异常" message:nil delegate:nil cancelButtonTitle:@ "确定" otherButtonTitles:nil];
[alert show];
[alert release];
}
}

这样就可以检查到在运行程序时网络突然的中断和连接。Reachability类实际上是苹果公司对SCNetworkReachability API的封装,这个API定义在SystemConfigure.framework库中。如果有其他特别的需求,也可以直接使用这个原生的SCNetworkReachability类.

二:AFNetworking监测 。

1.导入框架,和头文件#import <AFNetworkReachabilityManager.h> 。

2.代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
-( void )afn{
//1.创建网络状态监测管理者
AFNetworkReachabilityManager *manger = [AFNetworkReachabilityManager sharedManager];
//开启监听,记得开启,不然不走block
[manger startMonitoring];
//2.监听改变
[manger setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
/*
AFNetworkReachabilityStatusUnknown = -1,
AFNetworkReachabilityStatusNotReachable = 0,
AFNetworkReachabilityStatusReachableViaWWAN = 1,
AFNetworkReachabilityStatusReachableViaWiFi = 2,
*/
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@ "未知" );
break ;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@ "没有网络" );
break ;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@ "3G|4G" );
break ;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@ "WiFi" );
break ;
default :
break ;
}
}];
}

以上所述是小编给大家介绍的iOS 检测网络状态的两种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。

最后此篇关于iOS 检测网络状态的两种方法的文章就讲到这里了,如果你想了解更多关于iOS 检测网络状态的两种方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com