Swift - 获取状态栏一些信息

OC 实现参考文章

来获取状态栏的,运营商,网络,时间,电量的信息。

swift代码上代码:
//
//  StatusBarInfo.swift
//  swift_show
//
//  Created by Deki on 16/8/7.
//  Copyright © 2016年 Deki. All rights reserved.
//  获取状态栏的各种信息 :网络类型,运营商,电池电量,显示的系统时间等信息

import UIKit

enum NetWorkType {
    case NetworkStatesNone // 没有网络
    case NetworkStates2G // 2G
    case NetworkStates3G // 3G
    case NetworkStates4G // 4G
    case NetworkStatesWIFI // WIFI
}

class StatusBarInfo: NSObject {
    
    
    // 获取运营商 名称
    class func serviceCompany() -> String {
        let array :NSArray = (UIApplication.sharedApplication().valueForKeyPath("statusBar")?.valueForKeyPath("foregroundView")?.subviews)!
        
        for info in array {
            if info.isKindOfClass(NSClassFromString("UIStatusBarServiceItemView")!) {
                let serverStr:String = info.valueForKeyPath("serviceString") as! String
                return serverStr
            }
        }
        return ""
        
    }

    
    // 显示系统时间
    class func currentTimeString() -> String {
        let array :NSArray = (UIApplication.sharedApplication().valueForKeyPath("statusBar")?.valueForKeyPath("foregroundView")?.subviews)!
        
        for info in array {
            if info.isKindOfClass(NSClassFromString("UIStatusBarTimeItemView")!) {
                let timeStr:String = info.valueForKeyPath("timeString") as! String
                return timeStr
            }
        }
        return ""
        
    }
    
    // 检测网络状态
    class func currentNetworkType() -> NetWorkType {
        let array :NSArray = (UIApplication.sharedApplication().valueForKeyPath("statusBar")?.valueForKeyPath("foregroundView")?.subviews)!
        var states :NetWorkType = .NetworkStatesNone
        for info in array {
            if info.isKindOfClass(NSClassFromString("UIStatusBarDataNetworkItemView")!) {
                let networkType = info.valueForKeyPath("dataNetworkType")!.integerValue
                switch (networkType) {
                case 0:
                    states = .NetworkStatesNone;
                    //无网模式
                    break;
                case 1:
                    states = .NetworkStates2G;
                    break;
                case 2:
                    states = .NetworkStates3G;
                    break;
                case 3:
                    states = .NetworkStates4G;
                    break;
                case 5:
                    states = .NetworkStatesWIFI;
                    break;
                default:
                    break;
                }

            }
        }
        return states

    }
    
    // 获取当前的电量信息
    class func currentBatteryPercent() -> String {
        let array :NSArray = (UIApplication.sharedApplication().valueForKeyPath("statusBar")?.valueForKeyPath("foregroundView")?.subviews)!
        for info in array {
            if info.isKindOfClass(NSClassFromString("UIStatusBarBatteryPercentItemView")!) {
                let presentStr:String = info.valueForKeyPath("percentString") as! String
                return presentStr
            }
        }
        return ""

    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,192评论 4 61
  • 因为不想身边人遇到同样的事情而做出错误的决定所以这件事也就成了我茶余饭后、谈天说地时出现频率最高的一件事。今天发表...
    陈伟程阅读 448评论 0 0
  • 往事难忘,不能忘……#想太多# 如果有一天,可以什么都不做,只做你想做的事,任何你想做的事,那么你会做什么? 你会...
    月野筝阅读 223评论 0 0
  • 接完电话回寝室感觉浑身都快乐了,莫名的开心。这是我一天中最开心的时候了。喜欢这种感觉。每次看他们迎新总会在想两年前...
    我和我的小太阳阅读 212评论 0 0
  • 连续177 【诗124:8】我们得帮助,是在乎倚靠造天地之耶和华的名。 《感动》告诉我的是得帮助是因为在手所做的事...
    报佳音阅读 97评论 0 0