iOS 13: разрешение «Разрешить однократно» с WiFi SSID приводит к ошибке: [] nehelper отправил неверный код результата [1] для запроса информации Wi-Fi - PullRequest
2 голосов
/ 21 января 2020

Я использую информацию Wi-Fi в моем приложении. Я прекрасно использовал эту функцию до сих пор, но с iOS 13 и введением нового разрешения для местоположения «Разрешить один раз» я получаю эту ошибку: [] nehelper отправил недопустимый код результата [1] для запроса информации Wi-Fi . Эта ошибка возникает, когда я пытаюсь перейти на страницу настроек WiFi для подключения к SSID WiFi для во второй раз в моем приложении.

Разрешить однократно Разрешение:

Предоставляет предварительную авторизацию, которая аналогична разрешению «Когда используется», но активна только для одного сеанса. Таким образом, если пользователь выбирает опцию разрешить один раз, ваше приложение может получить доступ к своему текущему местоположению, пока ваше приложение не будет перемещено в фоновый режим и не станет неактивным. Если ваше приложение снова становится активным, вы должны снова запросить разрешение на местоположение.

Ниже приведен мой код для получения разрешения на местоположение:

locationManager.delegate = self
locationManager.distanceFilter = kCLDistanceFilterNone
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.allowsBackgroundLocationUpdates = true
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.requestAlwaysAuthorization()

В моем случае, Я выбираю разрешение Разрешить один раз , затем дважды перехожу на задний план, чтобы выбрать точку доступа WiFi в общей сложности 2 раза. Он работает впервые, однако во 2-й раз он не дает мне информацию о SSID подключенного WiFi, а вместо этого выдает мне эту ошибку: [] nehelper отправил неверный код результата [1] для информации Wi-Fi request. Как все время подключать WiFi SSID в разрешении местоположения «Allow Once»? Согласно новым изменениям в iOS 13, как показано ниже:

Конфигурация WiFi использует CNCopyCurrentNetworkInfo, которая возвращает текущую информацию о сети для данного сетевого интерфейса. Таким образом, этот словарь содержит нашу текущую информацию о сети, в основном SSID сети Wi-Fi.

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

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

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

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

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

Если вы не соответствуете вышеуказанным условиям, CNCopyCurrentNetworkInfo всегда будет возвращать ноль в iOS 13.

Ссылка: [https://developer.apple.com/documentation/systemconfiguration/1614126-cncopycurrentnetworkinfo] [1 ]

...