iOS проверяет, доступна ли сотовая технология, даже если устройство подключено к WiFi
Нужна помощь здесь.
Мне нужно определить, есть ли у устройства iOS (в определенный момент) возможности сотовой связи (независимо от того, какое).
Я пытался использовать класс достижимости, но проблема начиналась, когда пользователь подключен к WiFi, потому что, если это так - достижимость не может обнаружить сотовую связь
Я также пытался использовать этот код:
CTTelephonyNetworkInfo *telephonyInfo = [CTTelephonyNetworkInfo new];
NSLog(@"Current Radio Access Technology: %@", telephonyInfo.currentRadioAccessTechnology);
[NSNotificationCenter.defaultCenter addObserverForName:CTRadioAccessTechnologyDidChangeNotification
object:nil
queue:nil
usingBlock:^(NSNotification *note)
{
NSLog(@"New Radio Access Technology: %@", telephonyInfo.currentRadioAccessTechnology);
}];
Но даже если я отключаю сотовые данные, они возвращаютсяCTRadioAccessTechnologyLTE
я не могу понять почему.
редактировать
Я попытался перечислить сетевой интерфейс, как suggastion в ответе ниже, но pdp_ip0 все еще работает и получает IP.
struct ifaddrs* interfaces = NULL;
struct ifaddrs* temp_addr = NULL;
// retrieve the current interfaces - returns 0 on success
NSInteger success = getifaddrs(&interfaces);
if (success == 0)
{
// Loop through linked list of interfaces
temp_addr = interfaces;
while (temp_addr != NULL)
{
NSString* name = [NSString stringWithUTF8String:temp_addr->ifa_name];
NSString *address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
NSLog(@" Name:%@ IP:%@",name,address);
temp_addr = temp_addr->ifa_next;
}
}
// Free memory
freeifaddrs(interfaces);
Выход по ячейке отключен:
2015-08-04 11:58:33.297 check[405:46916] Name:pdp_ip0 IP:255.7.0.0
Вывод на ячейку включен (pdp_ip0 появляются дважды)
2015-08-04 11:59:08.914 check[405:46916] Name:pdp_ip0 IP:255.7.0.0
2015-08-04 11:59:08.914 check[405:46916] Name:pdp_ip0 P:10.130.112.****)
Я не хочу вдаваться в реал дважды, есть ли лучший способ?
Может кто-нибудь может иметь какие-либо идеи, как я могу заставить это работать? (без использования скрытого API).
Большое спасибо.