解决方法
http://bendytree.com/tips/Getting-an-iPhone-UDID-from-Mobile-Safari
Apple允许开发人员通过手机和Web服务器之间的特殊交互来获取一个人的UDID(以及做许多其他事情).这是一个概述:
>他们单击您网站上.mobileconfig XML文件的链接
>这会在他们的手机和电话上提取他们的配置设置.给他们一个
“安装”按钮(必须按下)
>手机会将您以加密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.在我的描述中,我说过“按安装继续…”,因为他们可能会在这个屏幕上混淆.
您不必签署.mobileconfig,但如果不签名,则会看到未签名的警告(参见下文).
接收请求的数据
QUIRK警告:无论出于何种原因,该过程非常特别关注服务器在将用户发送到您的预设URL时的响应方式.经过多次尝试,我相信您的接收URL必须是.PHP文件.这听起来很疯狂,但我很认真.
PHP是我想要使用的最后一种语言,因此我选择重定向到可以更好地处理它的页面.
<?PHP $data = file_get_contents('PHP://input'); header("Location: http://www.mysite.com/Results?data=".rawurlencode($data)); ?>
QUIRK WARNING ::我(和其他人)使其工作的唯一方法是重定向到目录.我试图重定向到.aspx页面但失败了.如果您没有做到这一点,那么将向用户显示一条模糊的错误消息&他们会被困住.如果您对此有更好的解释,请在下面留言.
在我的示例中,该页面将接收包含来自电话的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>