iOS-网络相关
第一.HTTP相关
传送门
第二.网络开发
超级传送门
第三.Swift版后台开发
跨星际传送门
=================获取网络信号======================
第一.Reachability 方法
_1.导入 Reachability.h 和 Reachability.m 文件 (自行下载)__2.相关控制器导入头文件和库文件 SystemConfiguration.framework__3.创建相关属性:_@property (nonatomic, strong) Reachability *reachability;
_4.相关申明:_[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotification
object:nil];
self.reachability = [Reachability reachabilityWithHostname:@"www.baidu.com"];
[self.reachability startNotifier];
_5.相关方法:__5.相关方法:_#pragma mark - 私有方法//实时监听网络状态
- (void)reachabilityChanged:(NSNotification *)notification
{
Reachability* curReach = [notification object];
NSParameterAssert([curReach isKindOfClass:[Reachability class]]);
[self updateInterfaceWithReachability:curReach];
}- (void)updateInterfaceWithReachability:(Reachability *)reachability
{
if (reachability == _reachability)
{
NetworkStatus netStatus = [reachability currentReachabilityStatus];
switch (netStatus)
{
case NotReachable:{
NSLog(@"没有网络!");
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"友情提醒" message:@"暂无网络!请检查网络!" preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[SVProgressHUD showWithStatus:@"数据恢复中!"];
}]];
[self presentViewController:alert animated:true completion:nil];
break;
}
case ReachableViaWWAN: {
NSLog(@"4G/3G");
[self loadingWeb];
[SVProgressHUD dismiss];
break;
}
case ReachableViaWiFi: {
NSLog(@"WiFi");
[self loadingWeb];
[SVProgressHUD dismiss];
break;
}
}
}
}
【iOS-网络相关】第二.从状态栏中获取网络类型,(弊端:手机无sim卡时,无法读取):
- (NSString *)getNetWorkStates{
UIApplication *app = [UIApplication sharedApplication];
NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];
NSString *state = [[NSString alloc]init];
int netType = 0;
//获取到网络返回码
for (id child in children) {
if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
//获取到状态栏
netType = [[child valueForKeyPath:@"dataNetworkType"]intValue];
switch (netType) {
case 0:
state = @"无网络";
//无网模式
break;
case 1:
state =@"2G";
break;
case 2:
state =@"3G";
break;
case 3:
state =@"4G";
break;
case 5:
{
state =@"wifi";
break;
default:
break;
}
}
}
//根据状态选择
}
return state;
}
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 猎杀IP
- 自媒体形势分析
- 数学大作战
- 2018.03.18
- 星期天的下午茶(一)
- 08黑龙江迟淑荣弯柳树网络学院第五期学习赵宗瑞老师主讲的(传统文化与身心健康)教育体系心得体会
- 三国谋略22(找准你的定位)
- 何以燃夏
- LSTM网络层详解及其应用实例