Получить уровень сигнала устройства

Я пытаюсь получить уровень сигнала в дБм для несущей, Wi-Fi, 3g и 4g.

В настоящее время я использую этот код для получения номера оператора и Wi-Fi из строки состояния, и я хотел бы знать, есть ли другой способ или лучший способ? Кроме того, как я мог получить это для 3g и 4g?

UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSString *dataNetworkItemView = nil;
NSString *wifiNetworkItemView = nil;

for (id subview in subviews) {
    if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarSignalStrengthItemView") class]]) {
        dataNetworkItemView = subview;
    }
    if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
        wifiNetworkItemView = subview;
    }
}

int carrierSignalStrength = [[dataNetworkItemView valueForKey:@"signalStrengthRaw"] intValue];
int wifiSignalStrength = [[wifiNetworkItemView valueForKey:@"wifiStrengthRaw"] intValue];

Не имеет значения, являются ли какие-либо методы, которые я использую, частными или нет.

Ответы на вопрос(2)

Ваш ответ на вопрос