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


Apple поменяла свои настройки конфиденциальности для iOS6 и умоляюще идентификаторы UUID устройства (уникальных идентификаторов). По словам разработчиков WWDC презентации и документы есть двух игроков за названием, как в UIDevice класс:

-identifierForVendor

  • ID, который идентичен между приложениями от одного и того же разработчика.
  • стирается с удалением последнего приложения для этого идентификатора команды.
  • резервное вверх.

-identifierForAdvertising

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

мне кажется, что -identifierForVendor уступает -identifierForAdvertising так как он будет сброшен при последнем удалении приложения от поставщика и "стереть все содержимое & настроить."

Какие преимущества -identifierForVendor более -identifierForAdvertising?

10 69

10 ответов:

Важное Замечание:

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

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

[[UIDevice currentDevice] identifierForAdvertising]

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

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

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

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

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

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

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

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

использовать VendorID. Это очень поучительная статья http://www.doubleencore.com/2013/04/unique-identifiers/

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

#import <AdSupport/ASIdentifierManager.h>

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

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

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

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

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

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

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

пользователь может изменить identifierForAdvertising в любое время в настройках, identifierForVendor изменяется после переустановки приложения, если больше нет приложений на устройстве от этого поставщика.

здесь является альтернативным и лучшим решением для получения или постоянные, кросс-установить идентификатор устройства:

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

код: https://gist.github.com/miguelcma/e8f291e54b025815ca46