Swift: состояние доступа «Мобильные данные» - PullRequest
1 голос
/ 16 апреля 2019

У меня есть приложение, которое я тестировал на iOS 10.3 несколько дней назад, и оно работало нормально.Я недавно протестировал его на устройстве iOS 12, и он не работал должным образом.Приложению не удалось подключиться к моему серверу.

После расследования я обнаружил, что для моего приложения выключен переключатель «Мобильные данные» в Настройки -> Имя приложения .После включения он начал работать отлично.

Итак, учитывая этот сценарий, есть ли способ определить состояние этого переключателя из моего кода?Если я могу знать статус и если он выключен, я могу перенаправить пользователя к настройке приложения, используя:

let urlObj = NSURL.init(string:UIApplicationOpenSettingsURLString)
if #available(iOS 10.0, *) {
    UIApplication.shared.open(urlObj as! URL, options: [ : ], completionHandler: { Success in

     })
} else {
      let success = UIApplication.shared.openURL(url as URL)
      print("Open \(url): \(success)")                            
}

PS: Я не ищу решение, использующее Reachability, поскольку ононе совсем надежен.

1 Ответ

0 голосов
/ 16 апреля 2019

Нет способа проверить этот параметр в последней версии iOS. У вас есть два варианта решения этой проблемы: во-первых, вы проверяете, не подключено ли устройство к Wi-Fi, а также не в режиме полета. Если сервер недоступен, можно предположить, что данные отключены.

Второй вариант - просто сообщать пользователю об ошибках, говорящих о том, что приложение не может связаться с сервером, и соответственно изменять пользовательский интерфейс / уведомление в приложении, чтобы иметь дело с любым сценарием, когда сетевое соединение не может быть установлено.

CTCellularData является потенциальной опцией, однако, начиная с iOS 11, наблюдается некоторое снижение частоты проверки состояния.

...