Есть ли способ с тех пор (выпуск iOS 7) получить UDID без использования iTunes на ПК /Mac?

Я разрабатываю приложение для своей компании, и мы постепенно впускаем людей в "бета-версию", добавляя их iPad в учетные записи iOS Dev Center. Оттуда мы делаем специальную сборку для локального распространения в Интранете.

На моем последнем выступлении я бы направил людей в одно из тех приложений "найди мой UDID для меня", а затем заставил их прислать мне найденный им UDID.

iOS 7 прервала это - все эти приложения теперь исчезли, и если у вас все еще есть одно, оно возвращает GUID, который не имеет ничего общего с UDID.

Поэтому мне нужно подключить каждую из этих вещей к моему Mac, а затем получить UDID из iTunes, что является своего рода хлопотой (но менее утомительным, чем пытаться объяснить им, как получить его из iTunes, предполагая, что они даже это установлено). И иногда он пытается синхронизироваться с моим Mac, который, кажется, не оказывает никакого влияния, кроме как на создание профилей инициализации, которые я не хочу на устройстве. И, по крайней мере, однажды у меня появился iPad, который внезапно решил обновить себя с iOS 6 до iOS 7, что, я не уверен, связано с подключением к нему (и в этом случае пользователь не хотел его обновлять).

Так есть ли другой способ получить UDID от iPad, кроме как подключить его к компьютеру?

ЧТОБЫ УЧИТЬ: Я не пытаюсь получить UDID в приложении, я просто пытаюсь придумать самый быстрый способ получить UDID для добавления в список устройств в нашем профиле разработчика для распространения.

18 ответов

Решение

Вот мои результаты исследований:

Apple скрыла UDID от всех общедоступных API, начиная с iOS 7. Любой UDID, начинающийся с FFFF, является поддельным идентификатором. Приложения "Отправить UDID", которые ранее работали, больше нельзя использовать для сбора UDID для тестовых устройств. (вздох!)

UDID отображается, когда устройство подключено к XCode (в органайзере) и когда устройство подключено к iTunes (хотя вы должны нажать "Серийный номер", чтобы отобразить идентификатор.

Если вам нужно получить UDID для устройства, чтобы добавить его в профиль обеспечения, и вы не можете сделать это самостоятельно в XCode, вам придется пройти их шаги, чтобы скопировать / вставить его из iTunes.

ОБНОВЛЕНИЕ - см . Ответ okiharaherbst ниже для подхода, основанного на сценариях, чтобы позволить тестовым пользователям предоставить вам UDID своего устройства, разместив файл mobileconfig на сервере

Перейдите на http://get.udid.io/ из Safari на вашем устройстве iOS. Он работает как шарм и не требует ни iTunes, ни какого-либо другого компьютера. Приложение не установлено.

РЕДАКТИРОВАТЬ:

Кроме того, посмотрите на Получение UDID устройства из.mobileconfig, если вы (по понятным причинам) предпочли бы иметь этот сертификат.mobileconfig, размещенный на вашем сервере.

СДЕЛАТЬ СВОЙ СОБСТВЕННЫЙ:

Разместите копию примера.mobileconfig, размещенную на вашем сервере, и напишите 2-3 небольших скрипта на вашем любимом языке для выполнения следующего потока:

  1. Перейдите в Safari к URL-адресу, перенаправляющему на enroll.mobileconfig ниже. Это заставит iOS открыть приложение "Настройки" и отобразить профиль.
  2. После принятия профиля iOS переключается обратно на Safari и публикует массив DeviceAttributes по указанному URL-адресу enroll.mobileconfig.
  3. Данные POST будут содержать файл.plist с запрошенными атрибутами (см. Пример ниже). Одним из которых будет святой UDID.

Примечание: у вас, вероятно, должны быть удобные сообщения. В частности, у нас даже есть шаг 0., где пользователю предлагается указать свое имя и адрес электронной почты, которые мы временно храним в сеансе HTTP, а затем перенаправить запрос в профиль mobileconfig. Мы в конечном итоге сопоставляем эту информацию с данными iPhone и отправляем дружеское подтверждение по электронной почте. НТН.

enroll.mobileconfig

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>PayloadContent</key>
        <dict>
            <key>URL</key>
            <string>http://support.devcorp.com/uuid/returnurl/</string>
            <key>DeviceAttributes</key>
            <array>
            <string>DEVICE_NAME</string>
            <string>UDID</string>
            <string>PRODUCT</string>
            <string>VERSION</string>
            <string>SERIAL</string>
            </array>
        </dict>
        <key>PayloadOrganization</key>
        <string>DevCorp Inc.</string>
        <key>PayloadDisplayName</key>
        <string>Profile Service</string>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadUUID</key>
        <string>C5FB9D0D-0BE7-4F98-82CC-5D0EA74F8CF8</string> <!-- any random UUID -->
        <key>PayloadIdentifier</key>
        <string>com.devcorp.profile-service</string>
        <key>PayloadDescription</key>
        <string>This is a temporary profile to enroll your device for ad-hoc app distribution</string>
        <key>PayloadType</key>
        <string>Profile Service</string>
    </dict>
</plist>

образец.plist, размещенный iPhone по указанному URL

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PRODUCT</key>
    <string>iPhone4,1</string>
    <key>SERIAL</key>
    <string>DNPGWR2VCTC0</string>
    <key>UDID</key>
    <string>b01ea7bc2237fed21bfe403c6d2b942ddb3c12c3</string>
    <key>VERSION</key>
    <string>11A465</string>
</dict>

Надеюсь, это поможет:

  1. Подключите iPhone к вашему MAC(я не пробовал это с Windows)
  2. Нажмите на логотип Apple в верхнем левом углу> выберите " Об этом Mac"
  3. На вкладке Обзор > Системный отчет
  4. Оборудование в левой колонке> USB >
  5. затем на правой панели выберите iPhone
  6. в нижней панели -> "Серийный номер"

-> И этот серийный номер UDID

Если кто-то из ваших пользователей работает под управлением Linux, он может использовать это из терминала:

lsusb -v 2> /dev/null | grep -e "Apple Inc" -A 2

Он получает всю информацию для подключенных USB-устройств и печатает строки с "Apple Inc", включая следующие 2 строки.

Результат выглядит так:

iManufacturer           1 Apple Inc.
iProduct                2 iPad
iSerial                 3 7ddf32e17a6ac5ce04a8ecbf782ca509...

Это работает для меня на iOS5 -> iOS7, хотя я не пробовал ни на одном устройстве iOS4, хотя.

IMO, это быстрее, чем любое решение Win/Mac/Browser, которое я нашел, и не требует установки "программного обеспечения".

Кажется, что TestFlight может извлечь UDID, как только пользователь зарегистрируется:

https://testflightapp.com/

Я использовал утилиту конфигурации iPhone, чтобы прочитать UDID и установить приложение для разработчиков. Все еще отлично работает на iOS7

Подключите его и запустите из командной строки:

system_profiler SPUSBDataType

Ищу:

Serial Number: xxxx

Попросите их создать учетную запись http://testflightapp.com/.

Это очень полезно для бета-тестирования - я думаю, для этого вам нужны udids.

Вы можете отправить им ссылку на скачивание в свое приложение (находится в списке разрешений внизу страницы), и он скажет им, что их udid еще не проверен. Затем он скажет им их UDID! Они могут скопировать и вставить это и отправить вам текст.

Шаги, чтобы найти UDID с IPhone и IPad без использования Itunes

  1. Откройте ссылку ниже на вашем iPhone или iPad: - http://get.udid.io/

  2. Нажмите на кнопку зеленого цвета - нажмите, чтобы найти UDID

  3. Появится ваш UDID, нажмите на правую верхнюю кнопку УСТАНОВИТЬ

4 Появится UDID. Скопируйте UDID.

Найден хороший способ справиться с этим: добавьте приложение на testFlight.com и дайте ссылку пользователю, которому вы хотите его UDID. Он увидит сообщение об ошибке "UDID вашего устройства: xxxxxx не зарегистрирован", и UDID будет правильным.

Попробуйте этот онлайн-инструмент http://www.easy-udid.com/. Я тестировал его на различных устройствах iOS (iOS 6 и 7), и он отлично работает. Небольшой инструмент для быстрого добавления UDID клиента в профиль разработчика

Пожалуйста, используйте тестовый полет, чтобы получить UDID от тестеров, но не используйте ненадежный источник, например, http://get.udid.io/

Вы можете 1. пригласить тестеров по электронной почте с веб-страницы тестового полета. Тестеры открывают ссылку в электронном письме и устанавливают профиль из тестового рейса. Поэтому разработчики могут получить UDID на веб-странице тестового полета. 2. Добавьте эти UDID на портал обеспечения Apple.

(Ссылка: http://help.testflightapp.com/customer/portal/articles/829537-how-does-it-work-)

Процесс не требует, чтобы тестеры использовали Mac/ PC для получения UDID (более удобно). И я думаю, что тестовый полет - это компания, которой можно доверять (не стоит беспокоиться при передаче UDID этой компании).

Я проверил этот метод, и он работает на iOS 8.

diawi.com работает для меня, нет необходимости подключать iPhone с помощью кабеля или т. д.: просто перейдите на их вкладку "Мое устройство", которая приведет вас к установке их профиля обеспечения, а затем отобразите UDID и добавьте опцию, чтобы отправить его по электронной почте.

Если вы используете Mac, вы можете получить UUID из "Системного отчета", доступного в "Об этом Mac". Подключив устройство, откройте раздел USB и нажмите на iPhone. UUID отображается под "Серийный номер"

Я думаю, что iTunes выглядит единственным ответом, что крайне неудачно.

Или воспользуйтесь моим решением здесь: http://www.my-mo.co.uk/device/deviceinfo.php позволит вам получить доступ к UDID и отправить его по электронной почте тому, кого вы выберете.

Пожалуйста, используйте http://udid.io/ в браузере вашего устройства. Или, пожалуйста, установите iTools и подключите устройство, чтобы получить правильный UDID.

Адарш Э.М.

Мы можем использовать идентификатор ForVendor для ios7,

-(NSString*)uniqueIDForDevice
{
    NSString* uniqueIdentifier = nil;
    if( [UIDevice instancesRespondToSelector:@selector(identifierForVendor)] ) { // >=iOS 7
        uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    } else { //<=iOS6, Use UDID of Device       
            CFUUIDRef uuid = CFUUIDCreate(NULL);
            //uniqueIdentifier = ( NSString*)CFUUIDCreateString(NULL, uuid);- for non- ARC
            uniqueIdentifier = ( NSString*)CFBridgingRelease(CFUUIDCreateString(NULL, uuid));// for ARC
            CFRelease(uuid);
         }
    }
return uniqueIdentifier;
}

--Важная заметка ---

UDID и идентификатор ForVendor различаются:---

1.) On uninstalling  and reinstalling the app identifierForVendor will change.

2.) The value of identifierForVendor remains the same for all the apps installed from the same vendor on the device.

3.) The value of identifierForVendor also changes for all the apps if any of the app (from same vendor) is reinstalled.
Другие вопросы по тегам