Можно ли получить SSID и MAC-адрес текущей подключенной сети WiFi в приложении?

Я ищу способ получить как MAC-адрес, так и SSID текущей подключенной сети Wi-Fi в моем проекте. Я использовал Tach Million Reachability, чтобы решить, когда пользователь находится в сети Wi-Fi или нет, и тестировал NICInfo от Kenial, чтобы выяснить, что он предоставляет только MAC-адрес WiFi в iPhone. Хотя оба проекта по-своему очень помогли, они не справились со своей задачей. Мне интересно, есть ли публичный API (для определенного одобрения Apple App) или какой-то черный ход, чтобы достигнуть этого.

1 ответ

Решение

Это включает в себя несколько разных вещей:

  1. Получение SSID - это не зависит от проблемы MAC-адреса. Для этого проверьте ответ SO: iPhone получит SSID без личной библиотеки. Я не знаю, что такое этикет для повторного размещения кода из других ответов, поэтому я просто сделаю ссылку.

  2. Получение MAC-адреса - поскольку большинство сетей работает на уровне 3 (который называется, кто бы мог подумать, сетевой уровень - http://en.wikipedia.org/wiki/OSI_model), а MAC-адрес находится на уровне 2 (уровень канала передачи данных), вам сначала нужно получить IP-адрес шлюза интерфейса WiFi. Просто примечание - вопрос должен быть сформулирован как "Как получить SSID текущей подключенной сети Wi-Fi и MAC-адрес маршрутизатора / шлюза WiFi". В любом случае, чтобы получить адрес шлюза, посмотрите этот SO-ответ: Как получить адрес шлюза WIFI на iPhone?

    После этого вам необходимо преобразовать его в MAC-адрес, используя ARP (Address Resolution Protocol, протокол, который используется во всех сетях для преобразования IP-адресов в MAC-адреса). Сетевые интерфейсы не обмениваются данными через IP, они обмениваются данными через MAC, поэтому это происходит везде и всегда. На самом деле довольно легко получить доступ к таблице ARP на ПК /Mac. Для iOS я нашел этот SO-ответ для преобразования IP-адреса в MAC-адрес: Получение таблицы ARP на iPhone/iPad

Другие вопросы по тегам