我想为iphone创建一个网络应用程序,我需要获取设备的ID(而不是用户名/密码)。可以这样做吗?
答案 0 :(得分:7)
看起来你可以在没有太多工作的情况下获得UDID,这个答案来自这篇博文: http://bendytree.com/tips/Getting-an-iPhone-UDID-from-Mobile-Safari
Apple允许开发人员通过手机和您的Web服务器之间的特殊交互来获取一个人的UDID(以及做许多其他事情)。这是一个概述:用于检索UDID的示例.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://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>
您需要填写自己的网址和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页面但它失败了。如果你没有做到这一点,那么将向用户显示一个模糊的错误消息&amp;他们会被困住。如果您对此有更好的解释,请在下面留言。
您重定向到的页面是向用户显示以结束该过程的页面。
在我的示例中,该页面将收到一个'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>
答案 1 :(得分:1)
我知道这是一篇旧帖子,但我只是想在php中分享@ powerj1984解决方案的实现,并准备好使用我在这里找到的内容:
https://github.com/hunk/get-UDID
它对我有用。
正如我所说,这是一个实现,请参阅@ powerj1984的解决方案以获取详细说明。
希望它会帮助某人。
答案 2 :(得分:-1)
当然不是。那将是一个巨大的隐私漏洞。