遍歷UIStatusBar獲取信號(hào)類型
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請(qǐng)、網(wǎng)絡(luò)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、大武口網(wǎng)站維護(hù)、網(wǎng)站推廣。
- (void)getNetworkType
{
UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
for (id subview in subviews) {
if ([subview isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
int networkType = [[subview valueForKeyPath:@"dataNetworkType"] intValue];
switch (networkType) {
case 0:
NSLog(@"NONE");
break;
case 1:
NSLog(@"2G");
break;
case 2:
NSLog(@"3G");
break;
case 3:
NSLog(@"4G");
break;
case 5:
{
NSLog(@"WIFI");
}
break;
default:
break;
}
}
}
}
- (void)getSignalStrength{
UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSString *dataNetworkItemView = nil;
for (id subview in subviews) {
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
dataNetworkItemView = subview;
break;
}
}
int signalStrength = [[dataNetworkItemView valueForKey:@"_wifiStrengthBars"] intValue];
NSLog(@"signal %d", signalStrength);
}
能自己制作IOS系統(tǒng)也不會(huì)有人告訴你。早就擺出來(lái)賣(mài)了,
再說(shuō)了,蘋(píng)果的系統(tǒng)目前根本就沒(méi)有模仿的手機(jī)出現(xiàn)。
能自己出IOS系統(tǒng),那就敢叫板死去的喬布斯了。
你還是死心吧
通過(guò)官方的API 可以獲取到wifi的信息,實(shí)現(xiàn)代碼:
-?(id)fetchSSIDInfo?{??
NSArray?*ifs?=?(__bridge_transfer?id)CNCopySupportedInterfaces();??
NSLog(@"Supported?interfaces:?%@",?ifs);??
id?info?=?nil;??
for?(NSString?*ifnam?in?ifs)?{??
info?=?(__bridge_transfer?id)CNCopyCurrentNetworkInfo((__bridge?CFStringRef)ifnam);??
NSLog(@"%@?=?%@",?ifnam,?info);??
if?(info??[info?count])?{?break;?}??
}??
return?info;??
}
至于開(kāi)關(guān)wifi,是一個(gè)用戶的操作, 在非越獄的機(jī)器上,第三方的應(yīng)用是沒(méi)法實(shí)現(xiàn)這功能的。
作為一個(gè)開(kāi)發(fā)者,有一個(gè)學(xué)習(xí)的氛圍跟一個(gè)交流圈子特別重要,這是一個(gè)我的iOS交流群: 812157648 ,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿里面試題、面試經(jīng)驗(yàn),討論技術(shù), 大家一起交流學(xué)習(xí)成長(zhǎng)!
iOS 13 以后
獲取WiFi名稱,必須要先允許獲取定位信息
原文地址: ;request_id=160741070019215668868668biz_id=0utm_medium=distribute.pc_search_result.none-task-blog-2 all first_rank_v2~rank_v29-6-110481171.pc_search_result_cacheutm_term=iOS%E5%BC%80%E5%8F%91
最近遇到一個(gè)比較奇葩的需求:App與硬件通過(guò)WiFi LAN通信, 同時(shí)App需要與服務(wù)器通過(guò)3G/4G WAN通信,如下圖:
眾所周知,手機(jī)同時(shí)打開(kāi)WiFi和3G時(shí)候,會(huì)優(yōu)先走WiFi。這個(gè)該如何實(shí)現(xiàn)呢?市面上有一個(gè)極路客APP已經(jīng)實(shí)現(xiàn)此方案,網(wǎng)上各種搜索資料,出現(xiàn)一個(gè) Multipath TCP概念 ,但是這個(gè)系統(tǒng)沒(méi)有API,瞬間抓狂,直接查看極路客APP與他們硬件連接的WIFI,發(fā)現(xiàn)與我們平時(shí)WiFi不一樣,DNS沒(méi)有。
藍(lán)牙是比較簡(jiǎn)單的 使用蘋(píng)果自帶的 CoreBluetooth 就可以 ,至于wifi 現(xiàn)在貌似都是私有API了,上架可能會(huì)遇到問(wèn)題,如果是企業(yè)帳號(hào) 則可以使用NSNetService類 和CFNetServices C API實(shí)現(xiàn)設(shè)備的發(fā)現(xiàn)、連接和Bonjour services.通過(guò)Socket實(shí)現(xiàn)基于TCP/IP協(xié)議網(wǎng)絡(luò)通信。推薦 CocoaAsyncSocket 一個(gè)Socket的開(kāi)源框架