Как получить текущую сетевую информацию для данного сетевого интерфейса на iOS 13

Я пытаюсь реализовать приложение, использующее BSSID сети, к которой пользователь в настоящее время подключен на iOS 13.

Однако документация Apple для CNCopyCurrentNetworkInfo на iOS 13 не содержит четких требований для использование их API.

В его описании говорится следующее:

Запрашивающее приложение должно соответствовать одному из следующих требований:

  • Приложение использует базовое местоположение и имеет разрешение пользователя на использование информации о местоположении.

  • Приложение использует API NEHotspotConfiguration для настройки текущей сети Wi-Fi.

  • В приложении установлены активные конфигурации VPN.

Похоже, это говорит о том, что необходимо удовлетворить только одно из 3 требований, перечисленных выше.

Однако впоследствии в нем говорится:

Приложение, которое не соответствует ни одному из вышеперечисленных требований, получает следующее возвращаемое значение:

  • Приложение, связанное с iOS 12 или более ранней версией, получает словарь с псевдо-значениями. В этом случае SSID - это Wi-Fi (или WLAN в регионе Китая), а BSSID - 00: 00: 00: 00: 00: 00.

  • Приложение, связанное с iOS 13 или более поздней версии, получает NULL.

Это говорит о том, что приложение должно соответствовать всем указанным выше требованиям.

Это сильно сбивает с толку, каковы требования, поскольку в первой части утверждается, что вам нужно реализовать только один из трех, чтобы получить BSSID, тогда как во второй части говорится, что вы не получите его, если пропустите по любому из трех требований.

Любая помощь по этому поводу будет очень признательна!


person Shinlos    schedule 24.09.2019    source источник
comment
Для меня вам нужно как разрешение Core Location, так и установить информационные возможности Access WiFi.   -  person MadProgrammer    schedule 24.09.2019
comment
У меня есть разрешение на определение местоположения и возможность подключения к Wi-Fi, но SSID все еще не получен. Удалось ли вам получить SSID в iOS 13.0 Release?   -  person Benny Davidovitz    schedule 24.09.2019
comment
@BennyDavidovitz Честно говоря, было бы разумнее, если бы нам нужно было выполнить хотя бы одно условие для работы, и это подтверждается при чтении основного доклада. Я пробовал обновиться до бета-версии iOS 13.1, и она снова работает, так что немного загадка, что не так с iOS 13.0   -  person Shinlos    schedule 24.09.2019
comment
@Shinlos попробуйте запустить на iOS 13. Я знаю, что с бета-версией все в порядке. Вы можете увидеть в этом обсуждении (github.com/HackingGate/iOS13-WiFi-Info / issues / 7), что я не сумасшедший.   -  person Benny Davidovitz    schedule 24.09.2019
comment
ОБНОВЛЕНИЕ: перезагрузка устройства iOS решила это (не только для меня)   -  person Benny Davidovitz    schedule 02.10.2019


Ответы (2)


В вашей второй цитате действительно написано «любое», поэтому вы не уверены, почему вы думаете, что она предполагает «все».

А на 13.3 (17C54) пробовали?

У меня было несколько проблем с несколькими приложениями. Я начал задаваться вопросом, было ли это «всегда включать местоположение» или «только при использовании приложения».

person Sir Launcelot    schedule 12.12.2019

Похоже, что вы не одиноки в этой проблеме.

Согласно ветке github ниже, получение SSID кажется проблематичным даже в последней версии iOS (13.2.2).

По ссылке ниже вы обнаружите, что Apple, скорее всего, исправила эту проблему в iOS 13.3, которая сейчас находится в стадии бета-тестирования. Я предлагаю всем протестировать это и посмотреть, каковы будут результаты.

https://github.com/HackingGate/iOS13-WiFi-Info/issues/7

person iNF3Rnus    schedule 08.11.2019