IPadOS: сеть, подключенная через NEHotspotConfiguration, через некоторое время отключается - программирование
Подтвердить что ты не робот

IPadOS: сеть, подключенная через NEHotspotConfiguration, через некоторое время отключается

Мое приложение использует NEHotspotConfigurationManager для подключения к определенному устройству с помощью Wi-Fi. Устройство действует как точка доступа WPA2. В старых версиях iOS (iOS 12 и ниже) все работало нормально, но в iPadOS/iOS 13 устройство отключается через некоторое время каждый раз. Как сохранить соединение без постоянного хранения NEHotspotConfiguration?

Я подозреваю, что это как-то связано с новой функцией - Multiple Windows (которая не поддерживается моим приложением). Причина в том, что в моем NEHotspotConfiguration я установил флаг joinOnce на true (поскольку сеть устройства никогда не должна использоваться вне приложения). Документация Apple гласит:

Когда для joinOnce установлено значение true, горячая точка остается настроенной и подключенной только до тех пор, пока настроенное приложение работает на переднем плане. Точка доступа отключается, и ее конфигурация удаляется, когда происходит любое из следующих событий:

  • Приложение остается в фоновом режиме более 15 секунд.
  • Устройство спит.
  • Приложение аварийно завершает работу, закрывается или удаляется.
  • Приложение подключает устройство к другой сети Wi-Fi.

Возможно, мое приложение ошибочно признано уходящим с переднего плана.

Если для параметра joinOnce установлено значение false, приложение будет поддерживать соединение, но это неприемлемое решение, поскольку мое устройство не обеспечивает подключение к Интернету и его нельзя использовать вне приложения.

Вот как я могу применить конфигурацию точки доступа:

let hotspotConfiguration = NEHotspotConfiguration(ssid: self.ssid, passphrase: self.passphrase, isWEP: false)
hotspotConfiguration.joinOnce = true

NEHotspotConfigurationManager.shared.apply(hotspotConfiguration) { error in
    // connection is successfully applied
    // and about 15 seconds later it is lost.
}

Я ожидаю, что соединение будет сохраняться, когда для флага joinOnce установлено значение true.

4b9b3361