ios获取运营商和网络的demo
来源:互联网 发布:淘宝网小饰品批发 编辑:程序博客网 时间:2024/05/14 14:34
#import "ViewController.h"
#import<CoreTelephony/CTTelephonyNetworkInfo.h>
#import<CoreTelephony/CTCarrier.h>
@interface ViewController ()
@property(nonatomic,strong)CTTelephonyNetworkInfo *telephonyInfo;
@property(nonatomic,strong)UILabel *messageLa;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//[self updateMessage];
self.messageLa = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 350)];
self.messageLa.numberOfLines = 0;
[self.view addSubview:self.messageLa];
UIButton *refreshBtn = [[UIButton alloc]initWithFrame:CGRectMake(([UIScreen mainScreen].bounds.size.width-100)/2, 350, 100, 50)];
refreshBtn.backgroundColor = [UIColor blackColor];
refreshBtn.layer.cornerRadius = 10;
[refreshBtn setTitle:@"重新获取" forState:UIControlStateNormal];
[refreshBtn setTitle:@"重新获取" forState:UIControlStateSelected];
[refreshBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[refreshBtn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
[refreshBtn addTarget:self action:@selector(refreshData) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:refreshBtn];
[self getCarrierName];
}
/**
举例注解:
carrier name: 中国移动
mobile country code: 460
mobile network code: 00
ISO country code: cn
Allows VOIP: YES
*/
-(void)getCarrierName
{
self.telephonyInfo = [[CTTelephonyNetworkInfo alloc]init];
CTCarrier *carrier = [self.telephonyInfo subscriberCellularProvider];
NSString *currentCountry = [carrier carrierName];
NSLog(@"[carrier isoCountrCode] = %@, [carrier allowsVOIP] = %d, [carrier mobileCountryCode] = %@, [carrier mobileNetworkCode] = %@", [carrier isoCountryCode], [carrier allowsVOIP], [carrier mobileCountryCode], [carrier mobileNetworkCode]);
//网络状态
NSString *netState = [self networktype];
//信号的强弱
NSString *signalStrength = [self signalMessage];
//如果没有手机卡
if (!carrier.isoCountryCode) {
self.messageLa.textAlignment = NSTextAlignmentCenter;
self.messageLa.text = @"检测到无手机卡,无运营商";
}else
{
self.messageLa.text = [NSString stringWithFormat:@"\n\n运营商名称:%@\n\nISO国家码: %@\n\n移动设备网络代码(MNC):%@\n\n移动设备国家代码(MCC): %@\n\n是否支持网络电话(VOIP): %d\n\n使用网络状态: %@\n\n网络信号强弱为: %@",currentCountry,[carrier isoCountryCode],[carrier mobileNetworkCode],[carrier mobileCountryCode],[carrier allowsVOIP],netState, signalStrength];
}
}
-(NSString *)networktype{
NSString *info = [[NSString alloc]init];
NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSNumber *dataNetworkItemView = nil;
for (id subview in subviews) {
if ([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
dataNetworkItemView = subview;
break;
}
}
switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"] integerValue]) {
case 0:
info = @"无服务";
break;
case 1:
info = @"2G";
break;
case 2:
info = @"3G";
break;
case 3:
info = @"4G";
break;
case 4:
info = @"LTE";
break;
case 5:
info = @"wifi";
break;
default:
break;
}
return info;
}
//获取信号强弱
-(NSString *)signalMessage{
NSString *info = [[NSString alloc]init];
NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSNumber *dataNetworkItemView = nil;
NSNumber *signalStrengthItemView = nil;
for (id subview in subviews) {
if ([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
dataNetworkItemView = subview;
}
if ([subview isKindOfClass:[NSClassFromString(@"UIStatusBarSignalStrengthItemView") class]]) {
signalStrengthItemView = subview;
}
if (dataNetworkItemView && signalStrengthItemView) {
break;
}
}
NSNumber *networkTypeNum = [dataNetworkItemView valueForKey:@"dataNetworkType"];
//网络信号强弱
NSNumber *signalStrengthBars = [signalStrengthItemView valueForKey:@"signalStrengthBars"];
//wifi的信号强弱
NSNumber *wifiStrength = [dataNetworkItemView valueForKey:@"wifiStrengthBars"];
NSInteger networkType = [networkTypeNum integerValue];
switch (networkType) {
case 0:
info = @"无服务";
break;
case 1:
info = [NSString stringWithFormat:@"%@",signalStrengthBars];
break;
case 2:
info = [NSString stringWithFormat:@"%@",signalStrengthBars];
break;
case 3:
info = [NSString stringWithFormat:@"%@",signalStrengthBars];
break;
case 4:
info = [NSString stringWithFormat:@"%@",signalStrengthBars];
break;
case 5:
info = [NSString stringWithFormat:@"%@",wifiStrength];
break;
default:
break;
}
return info;
}
-(void)refreshData
{
self.messageLa.text = nil;
[self performSelector:@selector(todo) withObject:nil afterDelay:1.0f];
}
-(void)todo
{
[self getCarrierName];
}
//-(void)updateMessage
//{
// self.telephonyInfo.subscriberCellularProviderDidUpdateNotifier = ^(CTCarrier *carrier)
// {
// dispatch_async(dispatch_get_main_queue(), ^{
// NSLog(@"+++++++++++");
// });
// };
//}
@end
- ios获取运营商和网络的demo
- ios获取运营商和网络的demo
- ios如何获取手机的网络状态和运营商名称
- ios如何获取手机的网络状态和运营商名称
- ios如何获取手机的网络状态和运营商名称
- ios中获取手机的网络状态和运营商名称
- iOS获取网络类型和运营商信息
- iOS:关于获取网络类型和运营商信息
- iOS:关于获取网络类型和运营商信息
- iOS:关于获取网络类型和运营商信息
- iOS:关于获取网络类型和运营商信息
- iOS 关于获取网络类型和运营商信息
- iOS 手机网络类型和运营商怎么获取
- IOS——获取当前运营商(获取漫游接入网络的运营商)
- iOS开发 - 如何获取设备的总容量和可用容量 网络运营商 3g/wifi判断 手机型号
- iOS开发 - 如何获取设备的总容量和可用容量 网络运营商 3g/wifi判断 手机型号
- iOS-获取当前设备的信息,网络状态,运营商,设备震动.获取设备信息
- iOS开发之获取运营商和WIFI
- jq插件设置浏览器缓存
- com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
- 第一章,java的开发运行环境
- 阿里云_数加平台类HQL的那些坑
- ios获取运营商和网络的demo
- ios获取运营商和网络的demo
- android Dialog弹在底部核心代码
- Android 检查版本更新 Server后台下载
- 霍尔传感器的工作原理、分类及应用
- 经验风险最小化
- kettle实现数据转换
- 小强学Python+OpenCV之-1.4.3图像(矩阵)加减运算
- csgo开箱抽奖技巧和教程
- draw9patch如何打开