iPhone получит список всех SSIDs без частной библиотеки
возможно ли получить список всех доступных SSIDs на iPhone без использования частной библиотеки?
Я прочитала iPhone получить SSID без частной библиотеки что касается получения подробной информации о настоящее сеть.
ответ отмечает:
Если вы джейлбрейк вашего устройства вы можете использовать Apple80211 private framework для поиска доступных сетей Wi-Fi и их сила сигнала. Но это также означает, что ваше приложение будет отклонено.
Apple имеет CaptiveNetwork по API но, похоже, нет решения для получения списка всех доступных сетей. Кажется, это можно сделать только с помощью частная библиотека Apple80211, или подключение ко всем из них.
Я что-то упускаю, или нет решения?
6 ответов
без использования частной библиотеки (Apple80211
) вы можете получить только SSID сети, к которой в настоящее время подключено ваше устройство.
начиная с iOS 9, вы можете использовать NEHotspotHelper чтобы получить список SSIDs. Но вы должны получить com.apple.developer.networking.HotspotHelper
право от Apple, отправив запрос.
проверить https://developer.apple.com/documentation/networkextension/nehotspothelper Для больше информации.
прежде всего импортируйте выше двух системных заголовочных файлов
import SystemConfiguration/SystemConfiguration.h
import SystemConfiguration/CaptiveNetwork.h
ниже функция / метод возвращает SSIDName
-(NSString *)getNetworkId{
NSString *string = CFBridgingRelease(CNCopySupportedInterfaces());
NSArray *interfacesArray = CFBridgingRelease(CFBridgingRetain(string));
if(interfacesArray.count > 0){
NSString *networkName = [interfacesArray objectAtIndex:0];
CFStringRef yourFriendlyCFString = (__bridge CFStringRef)networkName;
NSDictionary *unsafeInterfaceData = CFBridgingRelease(CNCopyCurrentNetworkInfo(yourFriendlyCFString));
NSString *ssidName = unsafeInterfaceData[@"SSID"];
return ssidName;
}
return @"No network Found";
}
Шаг 1: добавить рамки SystemConfiguration.рамки
Шаг 2: импортировать следующий файл заголовка
import SystemConfiguration
import SystemConfiguration.CaptiveNetwork
Шаг 3: Теперь Используйте Код:
func getUsedSSID()->String {
let interfaces = CNCopySupportedInterfaces()
if interfaces != nil {
let interfacesArray = CFBridgingRetain(interfaces) as! NSArray
if interfacesArray.count > 0 {
let interfaceName = interfacesArray[0] as! String
let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)! as Dictionary
let SSIDName = unsafeInterfaceData["SSID"] as! String
print(SSIDName)/* here print recentally used wifi name*/
return SSIDName
}else{
return "0"
}
}else{
return "0"
}
}
некоторые новые API были выпущены как часть сетевого расширения в iOS 9 и iOS 11. Хотя ни один из них не позволяет сканировать сети во время работы приложения, они оба позволяют выполнять связанные задачи. Например. вы можете сканировать сети в то время как страница настройки Wi-Fi работает с помощью Hotspot Helper, и вы можете сделать его более легким для пользователя, чтобы присоединиться к сети, используя любой из них.
вот сравнение двух структур.
точка доступа Помощник!--9-->
-
NEHotspotHelper
(введено в iOS 9,WWDC 2015).
- требуется специальное разрешение от компании Apple.
- требует
com.apple.developer.networking.HotspotHelper
право.
- для пошаговых инструкций, чтобы получить эту работу, см. ответ.
-
позволяет участвовать в обнаружении / аутентификации в сети Wi-Fi через экран Wi-Fi в приложении "Настройки". вы регистрируетесь в уведомление, когда сети сканируются (например, когда пользователь запускает Wi-Fi в приложении "Настройки"), и вы можете автоматически предварительно заполнить пароль и отобразить аннотацию рядом с именем сети. Пользователь должен нажать на имя сети для подключения, но он не будет запрашивать пароль, если вы предварительно заполнили его.
Конфигурация Hotspot
-
NEHotspotConfigurationManager
(введено в iOS 11,конференции WWDC 2017).
- не требует специального разрешения от Apple.
- требует
com.apple.developer.networking.HotspotConfiguration
право.
-
позволяет инициировать подключение к сети Wi-Fi. вы даете ему список SSIDs / паролей, которые должны быть подключены во время работы вашего приложения. Он представит диалоговое окно с запросом пользователя, если они хотят подключиться к сети.
NEHotspotHelper
(введено в iOS 9,WWDC 2015).com.apple.developer.networking.HotspotHelper
право.позволяет участвовать в обнаружении / аутентификации в сети Wi-Fi через экран Wi-Fi в приложении "Настройки". вы регистрируетесь в уведомление, когда сети сканируются (например, когда пользователь запускает Wi-Fi в приложении "Настройки"), и вы можете автоматически предварительно заполнить пароль и отобразить аннотацию рядом с именем сети. Пользователь должен нажать на имя сети для подключения, но он не будет запрашивать пароль, если вы предварительно заполнили его.
NEHotspotConfigurationManager
(введено в iOS 11,конференции WWDC 2017).com.apple.developer.networking.HotspotConfiguration
право.позволяет инициировать подключение к сети Wi-Fi. вы даете ему список SSIDs / паролей, которые должны быть подключены во время работы вашего приложения. Он представит диалоговое окно с запросом пользователя, если они хотят подключиться к сети.
#import SystemConfiguration#
##import SystemConfiguration.CaptiveNetwork##
//create variable
var SSIDNameArray = NSMutableArray()
var nameArray : NSArray = [];
// Here function to return all SSIDName
func getUsedSSID()->NSArray{
let interfaces = CNCopySupportedInterfaces()
if interfaces != nil {
let interfacesArray = CFBridgingRetain(interfaces) as! NSArray
if interfacesArray.count > 0 {
for interfaceName in interfacesArray {
let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName as! CFString)! as NSDictionary
let SSIDName = unsafeInterfaceData["SSID"] as! String
self.SSIDNameArray .add(SSIDName)
}
nameArray = self.SSIDNameArray .copy() as! NSArray
return nameArray;
}else{
return nameArray;
}
}else{
return nameArray;
}
}