2012-02-18 7 views
1

Мне нужно проверить, правильно ли подключено устройство к сети «Мой-Wi-Fi» или нет. Если он подключен, я пошлю некоторые данные на сервер, иначе нет.Как проверить имя сетевого провайдера в программировании на iOS?

Сейчас я просто проверяю подключение к Интернету, используя класс Reachability.

Итак, как это проверить?

+0

Досягаемость также позволила проверить и WiFi. – user523234

ответ

2

Вы можете использовать звонок CNCopySupportedInterfaces().

CFArrayRef interfaces = CNCopySupportedInterfaces(); 
CFIndex count = CFArrayGetCount(interfaces); 

for (int i = 0; i < count; i++) { 
    CFStringRef interface = CFArrayGetValueAtIndex(interfaces, i); 
    CFDictionaryRef netinfo = CNCopyCurrentNetworkInfo(interface); 
    if (netinfo && CFDictionaryContainsKey(netinfo, kCNNetworkInfoKeySSID)) { 
     NSString *ssid = (__bridge NSString *)CFDictionaryGetValue(netinfo, kCNNetworkInfoKeySSID); 
     // Compare with your needed ssid here 
    } 

    if (netinfo) 
     CFRelease(netinfo); 
} 
CFRelease(interfaces); 

В моем опыте, вы, как правило, имеют один интерфейс в массиве, который будет либо действительное структуру, если вы подключены или NULL, если вы не. Тем не менее я допускаю, чтобы цикл for был на всякий случай.

__bridge литье внутри необходимо, только если вы используете ARC.

+0

Эй, как использовать __bridge, да, я использую ARC для своего проекта. Что я делаю? – Mrunal

+0

Вы используете, как в примере, который я предоставил, когда вы хотите использовать функции, не поддерживающие ARC-совместимость объектов. Для ssid cast, Xcode на самом деле вставил __bridge для меня. – coverback

+0

Что делать, я получаю сообщение об ошибке «Использование необъявленного идентификатора« __bridge »« – Mrunal