iOSがネットワークの状態に関する情報を入手する方法
3630 ワード
-(NSString *)currentCarrierName{
CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [telephonyInfo subscriberCellularProvider];
return [[NSString alloc] initWithFormat:@"%@_%@_%@_%@", [carrier carrierName], [carrier mobileCountryCode], [carrier mobileNetworkCode], [carrier isoCountryCode]];
}
:**UIStatusBarDataNetworkItemView**, **UIStatusBarSignalStrengthItemView**
:**dataNetworkType**, **wifiStrengthBars**, **signalStrengthBars**
詳細コードは次のとおりです.
-(NSString *)currentNetworkType{
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;
}
}
if (!dataNetworkItemView) {
return nil;
}
NSNumber *networkTypeNum = [dataNetworkItemView valueForKey:@"dataNetworkType"];
NSNumber *wifiStrengthBars = [dataNetworkItemView valueForKey:@"wifiStrengthBars"];
NSNumber *signalStrengthBars = [signalStrengthItemView valueForKey:@"signalStrengthBars"];
if (!networkTypeNum) {
return nil;
}
NSInteger networkType = [networkTypeNum integerValue];
switch (networkType) {
case 0:
return @"No Service";
break;
case 1:
return [[NSString alloc] initWithFormat:@"%@_%@", @"2G", signalStrengthBars];
break;
case 2:
return [[NSString alloc] initWithFormat:@"%@_%@", @"3G", signalStrengthBars];
break;
case 3:
return [[NSString alloc] initWithFormat:@"%@_%@", @"4G", signalStrengthBars];
break;
case 4:
return [[NSString alloc] initWithFormat:@"%@_%@", @"LTE", signalStrengthBars];
break;
case 5:
return [[NSString alloc] initWithFormat:@"%@_%@", @"WiFi", wifiStrengthBars];
break;
default:
return [[NSString alloc] initWithFormat:@"%@_%@_%@", networkTypeNum, wifiStrengthBars, signalStrengthBars];
break;
}
}
#import "YYModel.h"
//...
YYClassInfo *info = [YYClassInfo classInfoWithClass:[signalStrengthItemView class]];
NSLog(@"dataNetworkItemView ivars:%@", info.ivarInfos);
NSLog(@"dataNetworkItemView properties:%@", info.propertyInfos);
NSLog(@"dataNetworkItemView method:%@", info.methodInfos);