У меня похожая проблема. Ниже приведены мои предлагаемые решения - я сам собираюсь реализовать второе.
Первое решение:
РЕДАКТИРОВАТЬ: , как отмечает Джон Баллинджер в своем комментарии ниже, gekitz, автор UIDevice-with-UniqueIdentifier-для-iOS-5, меняет свою лицензию на MIT :) Спасибо, Джон!
Если вам просто нужна надежная замена UDID, попробуйте это и, пожалуйста, обратите внимание на его лицензию. Вы также можете искать другие решения на GitHub.
Второе решение:
Обновление этого решения: я отбросил идею, так как слишком много разработчиков говорят мне, что это нарушит HIG.
Гораздо более гибко, позволяет отслеживать кампании установки с вашими партнерами (например, назначив каждому филиалу определенное значение "UDID", которое вы можете позже проверить после установки приложения и отправки "UDID" на ваши серверы).
SO пользователей : пожалуйста, сообщите нам, если любое из нижеприведенного может нарушить HIG и, по сути, привести к отклонению заявки (особенно шаги 5, 6 и 7).
- Подготовить ссылку на страницу, которая выполняет скрипт, который оставляет
файл cookie, значение которого является уникальным (например, «UDID», сгенерированный вашим сервером).
- Пользователь нажимает эту ссылку в Mobile Safari. Скрипт хранит куки и
затем перенаправляет на страницу iTunes с вашим приложением (например,
http://itunes.apple.com/us/app/skype/id304878510?mt=8&uo=4).
- Приложение App Store запускается и показывает страницу с вашим приложением.
- Пользователь устанавливает приложение и запускает его.
- При первом запуске: после заставки вы видите предупреждение с просьбой активировать приложение (достаточно одной кнопки, например, «Активировать»).
- Примечание. Вам нужно убедиться, что предупреждение все еще отображается, когда приложение переводится в фоновый режим и возобновляется. Также вам необходимо иметь
- Пользователь нажимает «Активировать», ваше приложение закрывается / приостанавливается и iOS
открывает Safari и переходит на страницу (например, ссылка жестко закодирована в вашем приложении),
который читает значение cookie (наш «UDID») и запускает ваше приложение
используя схему URL, передавая это значение "UDID".
- Примечание: вам нужно разрешить Safari открыть эту ссылку (может потребоваться дополнительное кодирование, не уверен);
- Я полагаю, что некоторая страница с лицензионным соглашением (например) должна быть представлена пользователю и кнопкой, позволяющей продолжить, поэтому пользовательский интерфейс понятен пользователю (т. Е. Нет опыта, который приложение оставляет для открытия сафари и после второго сафари подает в отставку и открывает ваше приложение).
- Приложение запускается / возобновляет работу, сохраняет «UDID» и разблокирует
приложение, позволяющее отображать основной интерфейс и т. д.
- Теперь вы можете использовать сохраненный «UDID» при генерации событий для вас
сервер статистики и т. д.
- Позже вы можете обновить / удалить свой UDID, поделившись ссылками (ссылки URL-схемы приложения, распространяемые в информационном бюллетене в моем случае), которые откроют ваше приложение и передадут новое значение.
ПРИМЕЧАНИЕ : вам нужно будет охватить множество крайних случаев, таких как запуск / возобновление приложения с (или без) URL-схемой или Push-уведомлением и т. Д.
P.S. Ухожу на некоторое время, но позже проверим ваши отзывы. Спасибо!