как отключить помощь Wi-Fi без взаимодействия с пользователем

У меня есть несколько URL-адресов, которые нужно вызывать (программно) через Wi-Fi, а не с мобильными данными.

Поскольку функция WIFI ASSIST включена, при слабом сигнале Wi-Fi пакеты передаются через мобильные данные.

Я хотел бы предотвратить это.

Насколько я выяснил, нет API для включения и выключения помощи Wi-Fi программно.

Я могу определить, включены ли у пользователя мобильные данные и Wi-Fi с помощью класса досягаемости, и я могу предупредить пользователя, чтобы он отключил помощь Wi-Fi, но это очень плохой пользовательский опыт.

поэтому я решил посмотреть, возможно ли это сделать с помощью мобильного файла конфигурации iOS.

Но я не смог найти никаких ключей, связанных с Wi-Fi-помощью, в справочнике по профилю конфигурации Apple.

поэтому мне интересно, можно ли заставить Wi-Fi использоваться для определенных URL-адресов.

Я помню, что это возможно с помощью VPN ON DEMAND, у нас может быть доступ к определенным доменам через VPN.

Мне интересно, возможно ли то же самое для Wi-Fi через профиль конфигурации

Любые предложения приветствуются.


person Durai Amuthan.H    schedule 10.04.2018    source источник
comment
Кажется, это невозможно. Возможно, этот пост может вам немного помочь stackoverflow.com/questions/41184976/   -  person trungduc    schedule 13.04.2018
comment
Посмотрите, поможет ли что-то в этом? github.com/joninsky/DJiOSSDK/blob/   -  person Tarun Lalwani    schedule 13.04.2018
comment
С помощью этого я могу определить, проходит ли сетевое соединение через мобильные данные, и предупредить пользователя, чтобы он отключил мобильные данные и подключился к Wi-Fi, но это очень плохой пользовательский опыт, и поэтому я думаю сделать с мобильным профилем конфигурации, и это всего лишь одноразовый пользователь деятельность   -  person Durai Amuthan.H    schedule 13.04.2018
comment
Кажется, что есть способы улучшить опыт. Похоже, Sonos что-то сделал, чтобы помочь своим пользователям решить эту проблему: sonos.custhelp.com/app/answers/detail/a_id/4257/~/. Мне интересно, можете ли вы настроить URLSession, чтобы запретить использование сотовой связи. Проблема с этим подходом заключается в том, что я считаю, что он просто задержит URLRequest до повторного использования WiFi. Чего я не знаю, так это того, может ли наличие запроса при активной помощи Wi-Fi заставить iOS переключиться обратно на Wi-Fi.   -  person wottle    schedule 17.04.2018
comment
stackoverflow.com/questions/36303123/   -  person Pulkit Kumar Singh    schedule 19.04.2018


Ответы (3)


Как уже упоминалось, нет возможности программно управлять этим параметром в iOS. На самом деле это не то, о чем вы спрашиваете, поскольку вы, кажется, уже знаете, что ответ на этот вопрос - «Нет».

Вы спрашиваете о профиле конфигурации, поэтому я предполагаю, что это управляемые устройства. К сожалению, нет полезной нагрузки профиля конфигурации, о которой я знаю, которая заставляет управляемые устройства отключать Wi-Fi Assist.

Ваше намерение, однако, немного отличается от того, о чем вас спрашивают, я полагаю. Я думаю, у вас есть приложение, которое взаимодействует с ресурсом, доступным только через сеть Wi-Fi (вероятно, корпоративную сеть Wi-Fi). Если приложение попытается подключиться к ресурсу в режиме сотовой связи, оно не сможет подключиться. В некоторых случаях при слабом сигнале Wi-Fi устройство пытается помочь и переключается на сотовую связь, вызывая проблемы с приложением. Если бы мы могли найти способ заставить iOS не использовать Wi-Fi Assist во время работы вашего приложения, вы были бы в хорошей форме.

Если вы можете установить это приложение как управляемое приложение, есть способ определить, что приложению должно быть разрешено работать только при подключении к сети Wi-Fi. Для этого следует настроить правила использования сети с AllowCellularData по false (см. это для более подробной информации). Что я не уверен в этом решении, так это то, что это просто приводит к сбою соединений, когда Wi-Fi Assist включен и активен, или если iOS предпочитает не использовать Wi-Fi Assist, когда приложение работает, потому что оно не могу подключиться по сотовой связи. Поэтому я думаю, что вы можете указать приложению подключаться только через WiFi, но на самом деле это не даст вам лучшего решения вашей проблемы с пользовательским интерфейсом. Единственная мысль, что это действительно вас подкупает, это то, что ваше приложение никогда не будет пытаться подключиться при подключении к сотовой сети. Однако есть вероятность, что если вы измените это значение на false для своего идентификатора пакета приложения, это предотвратит включение Wi-Fi Assist во время работы вашего приложения. У меня нет доступа к MDM, чтобы попробовать, но вы можете проверить и посмотреть.

В конечном счете, учитывая, что это, вероятно, ситуация с корпоративным устройством, я думаю, вам придется решить эту проблему с помощью обучения пользователей. Хорошая новость в том, что это разовый шаг. Конечно, у пользователей может быть небольшое снижение производительности сети, когда сигнал Wi-Fi слабый, но сигнал сотовой сети сильный. Это не имеет большого значения, если это корпоративные устройства, где корпоративные приложения в основном будут работать только в сети Wi-Fi компании.

Другое решение, о котором вы упомянули, в основном использует VPN по запросу для подключения к внутренним ресурсам. Это дополнительная работа над инфраструктурой, и вы уже упоминали об этом, поэтому я не уверен, что это вообще вариант.

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

К сожалению, в этом пространстве не так много хороших вариантов. Тем не менее, есть надежда, что есть какой-то способ сделать это, поскольку Sonos, похоже, сделал что-то, чтобы их приложение не переключалось на WiFi Assist во время потоковой передачи на локальный сетевой ресурс: https://sonos.custhelp.com/app/answers/detail/a_id/4257/~/wi-fi-assist-and-sonos

Интересно, можете ли вы, чтобы ваше приложение открывало потоковое аудиосоединение с фиксированным локальным сетевым ресурсом, что заставляло бы его использовать Wi-Fi. Это довольно сумасшедший хак, но с достаточно низким битрейтом потоковой передачи аудиофайлов он может делать то, что вам нужно, не потребляя слишком много пропускной способности сети.

Согласно примечаниям Apple к Wi-Fi Assist:

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

Конечно, другое возможное решение, которое вы могли бы рассмотреть, — это улучшить покрытие Wi-Fi, чтобы сигнал не становился настолько плохим, чтобы потребовалась помощь Wi-Fi. Я знаю, что это может быть неосуществимо, но хотел бы выложить это там.

Удачи в этом!

person wottle    schedule 17.04.2018
comment
Спасибо, что выделили AllowCellularData. Это может быть полезно для моего варианта использования. - person Durai Amuthan.H; 18.04.2018

Не существует общедоступного API, который позволяет вам включать/отключать «Помощь Wi-Fi», и даже если вы найдете способ сделать это, ваше приложение будет отклонено.

person Tuc3k    schedule 13.04.2018
comment
Вот почему я хочу сделать это с помощью профиля конфигурации, но об этом также не так много информации. - person Durai Amuthan.H; 13.04.2018
comment
1. Как я уже упоминал, вам не разрешено изменять пользовательские настройки, даже если вы найдете способ сделать так, чтобы ваше приложение было отклонено после проверки. 2. Вы можете проверить качество соединения и заставить пользователя использовать сотовые данные или Wi-Fi, но это также запрещено. Вы должны прочитать Руководство по проверке App Store - person Tuc3k; 13.04.2018
comment
Согласитесь, мы не можем сделать это программно, поэтому я изучаю, можно ли это сделать с помощью файла конфигурации Apple. - person Durai Amuthan.H; 16.04.2018

Нет, вы не можете включить или отключить WiFi программно, и для этого нет API.

person Community    schedule 17.04.2018