iOS6 UDID-Какие преимущества имеет identifierForVendor перед identifierForAdvertising?
Apple поменяла свои настройки конфиденциальности для iOS6 и умоляюще идентификаторы UUID устройства (уникальных идентификаторов). По словам разработчиков WWDC презентации и документы есть двух игроков за названием, как в UIDevice
класс:
-identifierForVendor
- ID, который идентичен между приложениями от одного и того же разработчика.
- стирается с удалением последнего приложения для этого идентификатора команды.
- резервное вверх.
-identifierForAdvertising
- уникальное устройство.
- доступно для всех приложений; используется для рекламы - iAd преобразован из UDID для iOS 6 и более поздних версий.
- сброс с помощью "стереть все содержимое и настройки".
- резервное копирование.
мне кажется, что -identifierForVendor
уступает -identifierForAdvertising
так как он будет сброшен при последнем удалении приложения от поставщика и "стереть все содержимое & настроить."
Какие преимущества -identifierForVendor
более -identifierForAdvertising
?
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
overidentifierForAdvertising
Это то, что он не получит ваше приложение отклонено.
Это два разных идентификатора, предназначенных для двух разных целей. Я думаю, что 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/