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

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

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

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

Позвольте мне уточнить, как я реализовал свое решение MDM,

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

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

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

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

Спасибо.

Ответ 1

Лучший способ и, возможно, единственный способ - использовать новые возможности конфигурации Managed Apps в 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
}

Ответ 2

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

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

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

Вот пример Apple. https://developer.apple.com/library/content/samplecode/sc2279/Introduction/Intro.html

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

[UIDevice uniqueIdentifier] был заменен на [[UIDevice identifierForVendor] UUIDString] в iOS 6.0.