Получить идентификатор iphone в веб-приложении

Я хочу создать веб-приложение для iphone, и мне нужно получить идентификатор устройства (вместо имени пользователя / пароля). это можно сделать?

3 ответа

Похоже, вы можете получить UDID без особых усилий, этот ответ можно найти в этой записи блога: http://bendytree.com/tips/Getting-an-iPhone-UDID-from-Mobile-Safari

Apple позволяет разработчикам получать UDID человека (и многое другое) через специальное взаимодействие между телефоном и вашим веб-сервером. Вот обзор:

  1. Они нажимают на ссылку на XML-файл.mobileconfig на вашем веб-сайте.
  2. Это поднимает их настройки обеспечения на их телефоне и предлагает им кнопку "Установить" (которую они должны нажать)
  3. Телефон отправляет запрошенные вами данные в зашифрованном XML-формате на URL-адрес, указанный в вашем.mobileconfig
  4. Вы обрабатываете полученные данные и показываете им "спасибо" веб-страницу

Пример.mobileconfig для получения UDID:

<?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://yourwebsite.com/retrieve.php</string>
            <key>DeviceAttributes</key>
            <array>
                <string>UDID</string>
                <string>IMEI</string>
                <string>ICCID</string>
                <string>VERSION</string>
                <string>PRODUCT</string>
            </array>
        </dict>
        <key>PayloadOrganization</key>
        <string>yourwebsite.com</string>
        <key>PayloadDisplayName</key>
        <string>Profile Service</string>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadUUID</key>
        <string>9CF421B3-9853-4454-BC8A-982CBD3C907C</string>
        <key>PayloadIdentifier</key>
        <string>com.yourwebsite.profile-service</string>
        <key>PayloadDescription</key>
        <string>This temporary profile will be used to find and display your current device's UDID.</string>
        <key>PayloadType</key>
        <string>Profile Service</string>
    </dict>
</plist>

Вам нужно будет указать свой собственный URL и PayloadUUID. PayloadUUID не нужно генерировать особым образом - просто убедитесь, что он уникален для вашего приложения.

Также обязательно зарегистрируйте файловый обработчик для.mobileconfig (тип содержимого application / x-apple-aspen-config).

PayloadOrganization и PayloadDescription показываются пользователю, когда они видят профиль. В моем описании я сказал что-то вроде "Нажмите Install Install для продолжения...", так как они могут быть запутаны на этом экране.

Вам не нужно подписывать свой.mobileconfig, но если вы этого не сделаете, они увидят предупреждение о том, что он не подписан (см. Ниже).

Не подписанное изображение профиля

Получение запрошенных данных ПРЕДУПРЕЖДЕНИЕ. По какой-то причине процесс ЧРЕЗВЫЧАЙНО особенно касается того, как ваш сервер отвечает, когда отправляет пользователя на заданный вами URL-адрес. После многих попыток, я считаю, что ваш получающий URL ДОЛЖЕН быть.php файл. Это звучит глупо, но я серьезно.

PHP был последним языком, на котором я хотел работать, поэтому я решил перенаправить на страницу, которая могла бы справиться с этим лучше.

<?php
  $data = file_get_contents('php://input');
  header("Location: http://www.mysite.com/Results?data=".rawurlencode($data));
?>

QUIRK WARNING:: Единственный способ, которым я (и другие) заставил это работать, состоит в том, чтобы перенаправить в каталог. Я попытался перенаправить на страницу.aspx, и это не удалось. Если вы не понимаете это правильно, то пользователю будет показано неопределенное сообщение об ошибке, и оно застрянет. Если у вас есть лучшее объяснение этому, пожалуйста, оставьте комментарий ниже.

Страница, на которую вы перенаправляете, является страницей, которая отображается пользователю для завершения процесса.

В моем примере эта страница получит параметр строки запроса "data", содержащий ответ xml с телефона.

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>IMEI</key>
    <string>12 123456 123456 7</string>
    <key>PRODUCT</key>
    <string>iPhone4,1</string>
    <key>UDID</key>
    <string>b59769e6c28b73b1195009d4b21cXXXXXXXXXXXX</string>
    <key>VERSION</key>
    <string>9B206</string>
  </dict>
</plist>

Я знаю, что это старый пост, но я просто хочу поделиться реализацией решения @powerj1984 в php и готовой к использованию, которую я нашел здесь:

https://github.com/hunk/get-UDID

Это сработало для меня.

Как я уже сказал, это реализация, обратитесь к решению @powerj1984 за подробным объяснением.

Надеюсь, это поможет кому-то.

Конечно, нет. Это было бы огромной дырой в личной жизни.

Другие вопросы по тегам