IOS6 UDID - Какие преимущества имеет идентификатор forVendor над идентификатором forAdvertising?

Apple меняет свои настройки конфиденциальности для iOS6 и унижает UUID (UDID) устройства. Согласно презентации WWDC и документам есть две замены для UDID, как в классе UIDevice:

-identifierForVendor

  • Идентификатор идентичен между приложениями того же разработчика.
  • Стереть с удалением последнего приложения для этого идентификатора команды.
  • Резервное копирование.

-identifierForAdvertising

  • Уникально для устройства.
  • Доступно для всех приложений; используемый для рекламы - iAd конвертировал из UDID для iOS 6 и более поздних версий.
  • Reset с "Удалить все содержимое и настройки".
  • Резервное копирование.

Мне кажется, что -identifierForVendor уступает -identifierForAdvertising, так как он получит reset при последнем удалении приложения от поставщика и "удалит все содержимое и настройки".

Какие преимущества имеет -identifierForVendor над -identifierForAdvertising?

Ответ 1

Важное примечание:

Apple выпустила только iOS 6.0 и NDA была снята.

Для разработчиков, которые превентивно включили код, который ссылался на

[[UIDevice currentDevice] identifierForAdvertising]

этот метод имеет НЕ, который был включен в iOS 6. Если вы используете вышеуказанный метод, ваше приложение (скорее всего) сбой и будет отклонено!

Вместо этого Apple создала новый класс ASIdentifierManager, который включает в себя метод advertisingIdentifier. Здесь apple docs на нем:

Ответ 2

Пользователи могут ограничить использование отслеживания объявлений на своем телефоне. См. эту статью о механизме отказа в разделе "Настройки" > "Основные" > "О программе" > "Реклама".

Новый класс ASIdentifierManager имеет свойство advertisingTrackingEnabled, которое возвращает true или false в зависимости от того, имеет ли пользователь ограниченное отслеживание объявлений. Несмотря на то, что идентификатор рекламы устройства возвращается свойством advertisingIdentifier независимо от отказа, вы не должны использовать идентификатор, если пользователь отказался.

Таким образом, преимущество identifierForVendor заключается в том, что вы всегда будете иметь доступ и право использовать этот идентификатор для телефона независимо от того, какой пользователь отказался или отказался от отслеживания рекламы.

Ответ 3

Я подозреваю, что Apple просто отклонит ваше приложение, если вы используете identifierForAdvertising для всего, что не связано с рекламой (т.е. если вы отправляете identifierForAdvertising на свои собственные серверы, даже если вы не рекламная сеть или если вы отправите identifierForAdvertising в том же запросе с другими данными, которые потенциально могут идентифицировать отдельного человека).

Если мое подозрение верное, преимущество identifierForVendor over identifierForAdvertising заключается в том, что он не отклонит ваше приложение.

Ответ 4

Это два разных идентификатора, предназначенных для двух разных целей. Я бы подумал, что идентификатор ForVendor будет использоваться для выполнения действий, требующих приложения, привязанного к определенному пользователю/устройству, например, предоставления push-уведомлений и обновления серверных данных данных пользовательских приложений (например, их оценка или любые другие данные, которые хранятся для их).
Идентификатор для рекламы должен использоваться для таких целей, как целевая реклама, а также для проверки эффективности конкретной рекламной кампании (проверьте, какие устройства устанавливали приложения из-за определенного объявления).

Ответ 6

Чтобы создать уникальную строку на основе уникального идентификатора устройства в iOS 6:

#import <AdSupport/ASIdentifierManager.h>

NSString *uniqueString = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
NSLog(@"uniqueString: %@", uniqueString);

Ответ 7

Эти API-интерфейсы настолько плохо разработаны, что четко сказано: Apple не хочет, чтобы мы определяли пользовательские устройства.

Просто посмотрите описание identifierForVendor.

Он стирается, если пользователь удаляет все приложения от одного и того же поставщика.:( Он не является надежным - может возвращать nil (советы по документации "ждать" в течение некоторого времени, если это произойдет.: (

Они не использовали очевидное решение, которое работает в любое время и не полагается на установку/удаление - возвращает SHA-1 (или любой другой хэш) идентификатора внутреннего устройства, объединенного с идентификатором команды.

Ответ 8

identifierForAdvertising, вероятно, является превосходным с точки зрения отслеживания, но может быть предметом настоящего или будущего отказа от пользователя. С другой стороны, identifierForVendor не так сильно зависит от пользователя.

Ответ 9

Важно знать, что резервная копия идентификатораForVendor может быть восстановлена ​​только на том же устройстве. Если резервная копия восстанавливается в разностное устройство, идентификатор очищается.

Ответ 10

Пользователь может изменить идентификатор для рекламы в любое время в настройках, ИдентификаторForVendor изменяется после переустановки приложения, если на нем нет приложений на этом устройстве.

Вот альтернатива и лучшее решение для получения или постоянного, перекрестная установка Идентификатор устройства:

описание: https://blog.onliquid.com/persistent-device-unique-identifier-ios-keychain/

code: https://gist.github.com/miguelcma/e8f291e54b025815ca46