文档章节

根据系统状态栏判断网络状态

宁音雨雾
 宁音雨雾
发布于 2016/06/15 16:20
字数 195
阅读 35
收藏 0

 


Swift

    // MARK:
    // MARK: 判断有无网络
    /// 判断有无网络
     func stringIsHaveNetworking() -> String? {
        
        // 状态栏是由当前app控制的,首先获取当前app
        let app = UIApplication.sharedApplication();
        
        let childrenArray = app.valueForKeyPath("statusBar")?.valueForKeyPath("foregroundView")?.subviews;
        
        var type = 0;
     
        
        for i in childrenArray ?? [] {
            
            // 判断 类型
            if i.isKindOfClass(NSClassFromString("UIStatusBarDataNetworkItemView")!) {
                
                type = (i.valueForKeyPath("dataNetworkType")?.integerValue)!;
                
            }
        }
        
        switch type {
        case 1:
            
            return "2G";
 
            
        case 2:
            
            return "3G";
      
            
        case 3:
            
            return "4G";
        
            
        case 5:
            
            return "WIFI";
       
            
        default:
            
            return nil;
      
            
        }
    }

OC

- (NSString *)stringIsHaveNetworking {

    // 状态栏是由当前app控制的,首先获取当前app
    
    // 拿到 AppDelegate
    UIApplication *app = [UIApplication sharedApplication];
    
    NSArray *children = [[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
    
    int type = 0;
    
    for (id child in children) {
        if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
            type = [[child valueForKeyPath:@"dataNetworkType"] intValue];
        }
    }
    
    switch (type) {
        case 1:
            
            return @"2G";
            
            break;
            
        case 2:
            
            return @"3G";
        case 3:
            
            return @"4G";
        case 5:
            
            return @"WIFI";
            
        default:
            
            return @"NO-WIFI";//代表未知网络
            
            break;
    }
}

Swift/OC     Demo


学自:http://www.jianshu.com/p/b643bf74b8c6

© 著作权归作者所有

上一篇: Swift多线程之GCD
宁音雨雾
粉丝 55
博文 313
码字总数 48841
作品 0
东城
程序员
私信 提问
Android 刘海屏适配总结

一、简介 随着 Apple 发布 iPhone X 之后,各大手机厂商也开始模仿这种刘海屏的设计,而且刘海屏手机的用户也是越来越大,前段时间将项目进行了所有主流厂商的刘海屏手机的适配,以便让刘海屏...

developerHaoz
2018/07/20
0
0
Android中判断状态栏是否存在

在开发一个程序,需要根据当前状态栏的高度(如果是全屏状态,状态栏高度则为0)来计算一个View位于屏幕中的位置,因此就需要判断当前状态栏是否存在,我是这样判断的: WindowManager.Layo...

Cundong
2013/11/04
1K
0
Android状态栏微技巧,带你真正理解沉浸式模式

转载请注明出处:http://blog.csdn.net/guolinblog/article/details/51763825 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。 记得之...

sinyu890807
2016/08/23
0
0
Android 沉浸式状态栏 以及 伪沉浸式状态栏

小菜最近在调整页面状态栏的效果,主要包括沉浸式状态栏和伪沉浸状态栏(同事唠嗑给定义的玩的)。 前段时间整理过一篇 Android 沉浸式状态栏的多种样式,现在小菜在稍微的补充一下,都是在日常...

阿策神奇
2018/05/21
0
0
Android状态栏实现沉浸式模式

因为Android官方从来没有给出过沉浸式状态栏这样的命名,只有沉浸式模式(Immersive Mode)这种说法。而有些人在没有完全了解清楚沉浸模式到底是什么东西的情况下,就张冠李戴地认为一些系统...

津乐
2018/04/20
73
0

没有更多内容

加载失败,请刷新页面

加载更多

cpu load过高问题排查

load average的概念 top命令中load average显示的是最近1分钟、5分钟和15分钟的系统平均负载。 系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程...

mskk
20分钟前
4
0
用spring boot 实现websocket

import java.io.IOException;import javax.websocket.OnClose;import javax.websocket.OnError;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import java......

jingshishengxu
31分钟前
3
0
shell介绍,命令历史,命令补全和别名,通配符,输入输出重定向,管道符和作业控制

shell介绍 可以使用 yum list |grep zsh 或者 yum list |grep ksh 这样可以搜索 zsh 和 ksh ,有需要的话可以安装 总之,默认使用的就是 .bash shell 命令历史 输入过的命令会被保存在一个文...

doomcat
48分钟前
7
0
1995年的资深工程师,和你谈谈如何进阶

1995年的资深工程师,和你谈谈如何进阶 自我介绍 网络ID:杭城小刘,城市:顾名思义,人在杭州。1995年出生,本科毕业,现在是一名 iOS 资深工程师,年薪 35w。兴趣爱好广泛:乒乓球、美食、...

杭城小刘
今天
10
0
Kafka 面试题

1.Kafka中的ISR、AR代表什么? ISR:与leader保持同步的follower集合 AR:分区的所有副本 2.Kafka中的HW、LEO分别代表什么? LEO:每个副本的最后条消息的offset HW:一个分区中所有副本最小...

GrayWorld
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部