Уникальные идентификаторы для iOS MDM

поскольку Apple не одобряет уникальный идентификатор устройства для приложений, каков наилучший подход для связывания корпоративного приложения на устройстве, зарегистрированном в MDM?

из справочного документа протокола MDM регистрация по-прежнему использует UDID для процедуры регистрации.

мы не можем использовать новый identifierForVendor, потому что он не совпадает с UDID для регистрации.

позвольте мне обновить, как я реализовал свой MDM решение,

  1. устройство будет регистрироваться на сервере MDM с маркером и UDID устройства (тот, который Apple удаляет API)
  2. устройство отправит информацию об устройстве на MDM-сервер (Wifi MAC Addr, серийный номер, версия ОС и другая информация)
  3. будет клиентское приложение, которое будет разговаривать с сервером MDM через RESTful API. (Ранее я использовал UDID в качестве идентификатора ключа)

Я думал об использовании MAC-адреса, но в последнем для iOS 7, система всегда будет возвращать значение 02:00:00:00:00:00.

мы также не можем получить серийный номер устройства.

Итак, мой вопрос снова, как мы можем знать, что это приложение на этом устройстве принадлежит к этой регистрации MDM на сервере (3). Потому что теперь приложение не имеет общего ключа, который будет передан с процессом регистрации. Как сервер узнает, какое устройство какое?

спасибо.

5 ответов


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

Как только вы нажмете свою конфигурацию в свое приложение, вы можете вытащить ключ API с чем-то вроде ниже. Большинство основных решений MDM уже поддерживают этот тип функциональности в их новейшая версия.

NSDictionary *config = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"com.apple.configuration.managed"];
NSString *apiKey = config[@"kAPIKey"];

if (apiKey) {
    //We got an API key and we can use it
} else {
    //We didn't get an API key...something has gone wrong
}

lidsinkerответ верен, позвольте мне сосредоточиться на нем, чтобы помочь некоторым другим, которые ищут это.

вы можете создать корпоративное приложение и установить его через MDM. После регистрации устройства MDM может установить на устройство корпоративное приложение. MDM также может установить конфигурацию по умолчанию в NSUserDefault.

приложение может читать его всякий раз, когда он запускается, как описано выше в lidsinker'ы ответ.

Apple обеспечить пример здесь. https://developer.apple.com/library/content/samplecode/sc2279/Introduction/Intro.html


Я бы прочитал этот источник, который я нашел несколько месяцев назад;http://www.doubleencore.com/2013/04/unique-identifiers/

оттуда я использовал метод CFUID, который хорошо мне служил.

NSString *uniqueID = [NSString stringWithFormat:@"%@", CFUUIDCreateString(NULL, CFUUIDCreate(NULL))];


в iOS 7 Apple теперь всегда возвращает фиксированное значение при запросе MAC, чтобы специально помешать MAC в качестве базы для схемы ID. Поэтому теперь вы действительно должны использовать - [uidevice identifierForVendor] или создать UUID для каждой установки.


[UIDevice uniqueIdentifier] заменено на [[UIDevice identifierForVendor] UUIDString] в iOS 6.0.