Получить идентификатор iphone в веб-приложении
Я хочу создать веб-приложение для iphone, и мне нужно получить идентификатор устройства (вместо имени пользователя / пароля). это можно сделать?
3 ответа
Похоже, вы можете получить UDID без особых усилий, этот ответ можно найти в этой записи блога: http://bendytree.com/tips/Getting-an-iPhone-UDID-from-Mobile-Safari
Apple позволяет разработчикам получать UDID человека (и многое другое) через специальное взаимодействие между телефоном и вашим веб-сервером. Вот обзор:
- Они нажимают на ссылку на XML-файл.mobileconfig на вашем веб-сайте.
- Это поднимает их настройки обеспечения на их телефоне и предлагает им кнопку "Установить" (которую они должны нажать)
- Телефон отправляет запрошенные вами данные в зашифрованном XML-формате на URL-адрес, указанный в вашем.mobileconfig
- Вы обрабатываете полученные данные и показываете им "спасибо" веб-страницу
Пример.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 за подробным объяснением.
Надеюсь, это поможет кому-то.