Использование MDM для настройки корпоративного приложения через NSUserDefaults
Я использую Profile Manager в OS X Server 3.0.1 на 10.9, чтобы перенести мое корпоративное приложение на управляемое устройство под управлением iOS7. Это работает хорошо, и я также могу нажать настройки конфигурации устройства.
Мое препятствие заключается в том, как взять информацию, представленную в примере проекта Apple, ManagedAppConfig, и применить ее к приложению, распространяемому с помощью Profile Manager.
ManagedAppConfig предоставляет простой plist, который должен использоваться для помещения данных в NSUserDefaults приложения, которое затем используется для конфигурации приложения; но нет указания, как использовать MDM для передачи этого словаря данных в NSUserDefaults.
Я, очевидно, упускаю часть информации о том, как отправить список данных в NSUSerDefaults управляемого приложения, но пока мой поиск был бесплодным. Возможно ли это с помощью диспетчера профилей? Есть ли другой способ с OS X Server, который я еще не нашел?
Вот цитата из документа Apple на ManagedAppConfig:
ManagedAppConfig демонстрирует, как реализовать настройку управляемого приложения и поддержку обратной связи в приложении iOS. Эта функция позволяет серверу управления мобильными устройствами (MDM) помещать словарь в NSUserDefaults управляемого приложения для удаленной настройки параметров.
Вот примерный список с двумя частями данных, которые каким-то образом помещаются в NSUserDefaults приложения:
<?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>serverURL</key>
<string>http://developer.apple.com/</string>
<key>disableCloudDocumentSync</key>
<true/>
</dict>
</plist>
В документах по NSUserDefaults даже упоминается конфигурация через MDM, но никаких подробностей не приводится.
Если ваше приложение поддерживает управляемые среды, вы можете использовать объект NSUserDefaults, чтобы определить, какие предпочтения управляются администратором в интересах пользователя. Управляемые среды соответствуют компьютерным лабораториям или классным комнатам, где администратор или учитель может захотеть настроить системы определенным образом. В этих ситуациях учитель может установить набор предпочтений по умолчанию и навязать эти предпочтения пользователям. Если предпочтение управляется таким образом, приложения должны запретить пользователям редактировать это предпочтение, отключив любые соответствующие элементы управления.
Мой день был потрачен на поиск этой неуловимой информации без успеха, поэтому я прошу помощи сообщества SO. Может кто-нибудь указать мне информацию, мне нужно использовать MDM, чтобы вставить словарь данных в NSUserDefaults?
Большое спасибо.
3 ответа
Я написал небольшой пост в блоге о том, как вы будете тестировать ManagedAppConfig от Apple.
http://tomasmcguinness.com/2014/03/07/exploring-apples-managedappconfig-demo/
Раскрытие: этот пост описывает использование www.testmdmapp.com, который я написал.
Читать конфиг (swift 3):
if let managedConf = UserDefaults.standard.object(forKey: "com.apple.configuration.managed") as? [String:Any?] {
if let serverURL = managedConf["serverURL"] as? String{
return serverURL
}
}
if let serverURL = Bundle.main.object(forInfoDictionaryKey: "serverURL") as? String {
return serverURL
}
return "https://apple.com/"
как видите - приложение должно вручную включить чтение из конфигурации пакета MDM.
P, S: только управляемые приложения могут получить эти конфиги.
Изменения конфигурации управляемых приложений, которые передаются с сервера MDM, отображаются в NSUSerDefaults
так что вы можете добавить наблюдателя, чтобы получать уведомления о любых изменениях в NSUserDefaults
, Словарь конфигурации управляемых приложений, отправленный с сервера MDM, хранится в ключе с именем: com.apple.configuration.managed
Ваше приложение также может отправить словарь, содержащий обратную связь, на сервер MDM. Словарь, который отправляется обратно на сервер MDM в качестве обратной связи, должен храниться в этом ключе. com.apple.feedback.managed
Чтобы протестировать все это, вам потребуется устройство, управляемое сервером MDM, а приложение должно быть установлено сервером MDM, который поддерживает параметр ApplicationConfiguration и команды ManagedApplicationFeedback.
В файле readme.txt примера приложения рекомендуется ознакомиться с сеансом 301 WWDC 2013 "Расширение использования приложений для предприятий и образования" для демонстрации этого приложения.