iOS6 UDID - Какие преимущества у identifierForVendor по сравнению с identifierForAdvertising?
Apple меняет свои настройки конфиденциальности для iOS6 и отменяет UUID устройства (UDID). В соответствии с презентацией WWDC и документами есть две замены для UDID, оба в UIDevice
учебный класс:
-identifierForVendor
- Идентификатор, идентичный для приложений от одного разработчика.
- Удаляется с удалением последнего приложения для этого идентификатора команды.
- Резервное копирование
-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
, который возвращает истину или ложь в зависимости от того, имеет ли пользователь ограниченное отслеживание рекламы. Хотя рекламный идентификатор устройства возвращается advertisingIdentifier
свойство независимо от отказа, вы не должны использовать идентификатор, если пользователь отказался.
Таким образом, преимущество identifierForVendor заключается в том, что у вас всегда будет доступ и право использовать этот идентификатор для телефона, независимо от того, включен ли пользователь в список отслеживания рекламы или нет.
Я подозреваю, что Apple просто отклонит ваше приложение, если вы используете identifierForAdvertising
за все, что не связано с рекламой (т. е. если вы identifierForAdvertising
на ваши собственные серверы, даже если вы не рекламная сеть или если вы отправляете identifierForAdvertising
в том же запросе с другими данными, которые потенциально могут идентифицировать человека).
Если мое подозрение верно, преимущество identifierForVendor
над identifierForAdvertising
в том, что ваше приложение не будет отклонено.
Это два разных идентификатора, предназначенные для двух разных целей. Я бы подумал, что identifierForVendor будет использоваться для выполнения задач, требующих привязки приложения к конкретному пользователю / устройству, таких как предоставление push-уведомлений и обновление данных на сервере пользователя приложения (например, их оценки или любых других данных, сохраняемых для их).
Идентификатор ForAdvertising следует использовать для таких вещей, как целевая реклама, а также для проверки эффективности конкретной рекламной кампании (проверьте, на каких устройствах установлены приложения из-за определенной рекламы).
Используйте 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);
Пользователь может изменить identifierForAdvertising в любое время в настройках, идентификатор identifierForVendor изменяется после переустановки приложения, если на устройстве больше нет приложений от этого поставщика.
Вот альтернативное и лучшее решение для получения или постоянного переустановки идентификатора устройства:
описание: https://blog.onliquid.com/persistent-device-unique-identifier-ios-keychain/
Важно знать, что резервная копия идентификатора ForVendor может быть восстановлена только на том же устройстве. Если резервная копия восстановлена на другом устройстве, идентификатор очищается.
Эти API настолько плохо разработаны, что ясно говорит о том, что Apple не хочет, чтобы мы идентифицировали пользовательские устройства.
Достаточно взглянуть на описание идентификатора forVendor.
Он удаляется, если пользователь удаляет все приложения от одного поставщика.:(Это не надежно - может вернуть ноль (документация советует "подождать" некоторое время, если это произойдет.:(
Они не использовали очевидное решение, которое работает в любое время и не зависит от установки / удаления - возвращает SHA-1 (или любой другой хэш) внутреннего идентификатора устройства, объединенного с Team ID.
identifierForAdvertising
вероятно, имеет превосходство в плане отслеживания, но может быть предметом настоящего или будущего отказа пользователя. С другой стороны identifierForVendor
не так вероятно, чтобы быть предметом пользователя.