Обновлено:
Чтобы отправить любую команду на устройство, нам сначала нужно установить профиль MDM в профили устройства, которые будут содержать URL-адрес сервера, который будет использоваться устройством для опроса команд всякий раз, когда устройство получает push-уведомление.
См. http://media.blackhat.com/bh-us-11/Schuetz/BH_US_11_Schuetz_InsideAppleMDM_WP.pdf, чтобы получить подробную информацию о регистрации, также см. раздел «Отправка push-уведомлений» и разделы, следующие за ним по приведенной выше ссылке, где приведены подробные сведения о командах устройства.
Чтобы отправить push-уведомление, нам нужен push-сертификат apns, который мы можем создать на портале идентификации Apple. ">http://www.softhinker.com/in-the-news/iosmdmvendorcsrsigning
Для mdm мы отправляем полезную нагрузку push-уведомления в APN как {mdm : "PushMagicToken-of-device"}
Когда устройство получает push-уведомление, оно свяжется с URL-адресом сервера mdm для выполнения команды.
Отвечая на ваши вопросы: (P.S. Использовал Java для общения)
Q1. "Можете ли вы предложить мне, как сервер взаимодействует с устройством и устройство с сервером в форме запроса"
Ответ: Устройство будет взаимодействовать с сервером, когда получит push-уведомление от APN. Он свяжется с URL-адресом ключа ServerUrl, который вы предоставляете в полезной нагрузке mdm.
Это тип метода запроса PUT, устройство отправляет статус Idle на сервер в формате plist.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Status</key>
<string>Idle</string>
<key>UDID</key>
<string> [ redacted ] </string>
</dict>
</plist>
Вся связь с устройством осуществляется с использованием Plist (формат списка свойств), устройство легко понимает этот формат.
Q2: "Это означает, в какой форме вы отправляете команду с сервера и как вы проверяете выполнение команды и отправляете ответ на устройство"
Сервер тоже отправляет команду на устройство в виде plist. Например: Ниже приведен plist, отправленный для команды DeviceLock с моего сервера mdm, когда устройство отправляет ответ о статусе Idle.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Command</key>
<dict>
<key>RequestType</key>
<string>DeviceLock</string>
</dict>
<key>CommandUUID</key>
<string>ph_mdm_command_uuid</string>
</dict>
</plist>
Обратите внимание: у каждой команды есть поле CommandUUID, которое мы можем использовать для проверки текущих команд на стороне сервера, оно поддерживает текущий сеанс. Какую бы команду мы ни отправляли на устройство с CommandUUID, устройство возвращает статус этой команды с тем же самым CommandUUID.
Таким образом, в ответ на DeviceLock Command RequestType устройство возвращает ответ:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CommandUUID</key>
<string>ph_mdm_command_uuid</string>
<key>Status</key>
<string>Acknowledged</string>
<key>UDID</key>
<string>device_udid</string>
</dict>
</plist>
Здесь CommandUUID аналогичен тому, который отправил сервер, UDID — это udid устройства, а статус — «Подтверждено», что означает, что команда была успешно выполнена на устройстве.
Примечание. Все это отправляется в ответе Java в виде байтов. Если вы имели в виду, в каком формате я отправлял ответ на устройство.
Я предполагаю, что отправить отзыв на устройство означает либо отправить следующий запрос, либо остановить опрос: аналогичные шаги необходимо выполнить, если у вас есть список команд для отправки на устройство, поскольку в настоящее время мы можем отправлять только одну команду за раз. Если нет команд для выполнения и вы хотите, чтобы устройство прекратило опрос, вам нужно отправить пустой ответ. См. iOS MDM - Как закрыть или остановить соединение после того, как устройство ответит действительным ответом для получения дополнительной информации.
Надеюсь, это рассеяло сомнения. Если вы находитесь на этапе регистрации, пожалуйста, ознакомьтесь с комментариями @Victor, прежде чем следовать этому. Дайте мне знать в случае каких-либо разъяснений. В настоящее время у меня успешно работает установка mdm на устройстве iOS.
Спасибо.
person
Samreen
schedule
29.09.2014