Я пытаюсь получить силу сигнала в дБм для носителя, 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];
Не имеет значения, какие-либо методы, которые я использую, являются частными или нет.
Спасибо! И как вы считаете, это считается частным? Потому что было бы еще лучше, если бы это было бы приемлемо для appStore – razvan
Это, безусловно, частный API. Чтобы получить это для компиляции на современном SDK, мне пришлось вручную вывести некоторые из констант и функций CoreTelephony. Я отредактирую свой ответ, чтобы включить эти объявления. – JAL