Программно проверить, что профиль (конфигурация) MDM был успешно передан на устройство iOS?
Я пишу клиентское приложение для iOS, которое отправляет запрос на сервер, который поворачивается и запрашивает, чтобы обновленный профиль конфигурации был передан на мое устройство через внешний MDM (AirWatch). Я считаю, что профиль отображается в Settings -> General -> Profiles
, Когда MDM заканчивает обработку отправки профиля (отправлено или помещено в очередь, я не уверен), он отвечает на вызывающий сервер, говоря: "Да, профиль был отправлен", который повторяет этот ответ на мое клиентское приложение.
Проблема заключается в том, что профилю требуется около 30 секунд для того, чтобы профиль действительно был помещен на устройство, в то время как ответ веб-службы намного короче этого. Поэтому мое клиентское приложение считает, что профиль конфигурации был установлен, и позволяет приложению продолжать работу, пока профиль еще недоступен. Я хотел бы иметь возможность определять, когда профиль успешно загружен на мое устройство, и не позволять приложению продолжать работу до тех пор. Другой вариант - сделать всплывающее окно с сообщением о том, что профиль был успешно перемещен, но мне все равно нужно будет определить, какой профиль установлен.
Похоже, что в большинстве вопросов и ответов 2013 года о стековом потоке говорится, что нельзя запрашивать профили конфигурации, но мне было интересно, есть ли какие-то обходные пути, которые люди недавно пытались обойти. Я подумал о следующих возможностях - но я не знаю, какой из них предпочтительнее, или если это вообще возможно с iOS7 (по состоянию на 12.02.2014).
- Запросите установленные профили для того, что мне нужно (звучит невозможно из большинства вопросов и ответов, которые я видел; не знаю, изменилось ли это в обновлениях для iOS7)
- Что если я знаю точное имя профиля, которое ищу?
- Добавьте слушателя уведомления для толчков MDM
- использование
registerForRemoteNotificationTypes
/didReceiveRemoteNotification
или жеdidFinishLaunchingWithOptions
- Удар MDM может происходить вне моего приложения, поэтому песочница может помешать
- Можете ли вы прослушать порт, который использует MDM?
- использование
- Прослушайте изменения в настройках конфигурации профиля
- Добавьте запрос на сервере, чтобы запросить устройство для установленного профиля, и позвоните до отправки ответа клиенту.
- Выполните проверку сертификата, включив в профиль самоподписанный сертификат и проверив его
- Кажется немного хакерским, и я не уверен, позволит ли мой MDM мне это сделать
- Используйте методы достижимости
В качестве заметки я посмотрел на следующие ссылки плюс еще:
- Слайды MDDC WWDC 2013 - не видел ничего, что выделялось
- iOS получает профили конфигурации, которые установлены
- Проверьте / проверьте, установлен ли профиль конфигурации на iPhone (с 2010 г.)
Заранее спасибо!
1 ответ
Ваше приложение не сможет определить, был ли установлен профиль конфигурации, поскольку отсутствуют (публичные) API-интерфейсы, которые позволяют приложению запрашивать установленные профили, а также вы не сможете определить, было ли отправлено push-уведомление MDM на устройство. Вам придется полагаться на свой MDM (AirWatch), чтобы с уверенностью определить, что профиль был установлен.
Когда AirWatch передает профиль на устройство, он получает подтверждение того, что профиль установлен, но только после того, как AirWatch повторно запросит все установленные профили, он сообщит, что профиль был установлен. Что я видел, так это то, что вскоре после того, как AirWatch отправит команду установки профиля, он повторно запросит список профилей на устройстве, так что может оказаться возможным просто несколько раз опросить сервер и подождать, пока вы не увидите, что профиль установлен., Я не провел много времени в API REST AirWatch подробно, но я предполагаю, что это возможно.
Кроме этого, единственная другая опция, которую я вижу, - это что-то сделать с Reachability, чтобы определить, настраивается ли VPN-туннель.