【问题标题】:Retrieve iPhone UDID on Safari在 Safari 上检索 iPhone UDID
【发布时间】:2014-06-23 19:03:45
【问题描述】:

在 Safari 上检索 iPhone UDID 有一个很好的说明。

http://www.bendytree.com/tips/Getting-an-iPhone-UDID-from-Mobile-Safari

我仔细阅读这篇文章并遵循它。

这是我的脚本。

<?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://appfree.com/user/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>AppFree, Inc.</string>
        <key>PayloadDisplayName</key>
        <string>AppFree</string>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadUUID</key>
        <string>9CF421B3-9853-4454-BC8A-982CBD3C907C</string>
        <key>PayloadIdentifier</key>
        <string>kr.co.gpon.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>

但是,当用户尝试安装配置文件时,它仍然显示未签名消息

PS。是否有替代手册来解决这个问题?

================================================ =============================

更新

我通过此代码成功地从我的 iPhone 获取数据。

$data = file_get_contents('php://input');

$plistBegin   = '<?xml version="1.0"';
$plistEnd   = '</plist>';

$pos1 = strpos($data, $plistBegin);
$pos2 = strpos($data, $plistEnd);

$data2 = substr ($data,$pos1,$pos2-$pos1);

$xml = xml_parser_create();

xml_parse_into_struct($xml, $data2, $vs);
xml_parser_free($xml);

$UDID = "";
$CHALLENGE = "";
$DEVICE_NAME = "";
$DEVICE_PRODUCT = "";
$DEVICE_VERSION = "";
$iterator = 0;

$arrayCleaned = array();

foreach($vs as $v){

    if($v['level'] == 3 && $v['type'] == 'complete'){
    $arrayCleaned[]= $v;
    }
$iterator++;
}

$data = "";

$iterator = 0;

foreach($arrayCleaned as $elem){
                $data .= "\n==".$elem['tag']." -> ".$elem['value']."<br/>";
                switch ($elem['value']) {
                    case "CHALLENGE":
                        $CHALLENGE = $arrayCleaned[$iterator+1]['value'];
                        break;
                    case "DEVICE_NAME":
                        $DEVICE_NAME = $arrayCleaned[$iterator+1]['value'];
                        break;
                    case "PRODUCT":
                        $DEVICE_PRODUCT = $arrayCleaned[$iterator+1]['value'];
                        break;
                    case "UDID":
                        $UDID = $arrayCleaned[$iterator+1]['value'];
                        break;
                    case "VERSION":
                        $DEVICE_VERSION = $arrayCleaned[$iterator+1]['value'];
                        break;                       
                    }
                    $iterator++;
}

$params = "UDID=".$UDID."&CHALLENGE=".$CHALLENGE."&DEVICE_NAME=".$DEVICE_NAME."&DEVICE_PR ODUCT=".$DEVICE_PRODUCT."&DEVICE_VERSION=".$DEVICE_VERSION;
// enrollment is a directory
header('Location: http://mywebsite.com/enrollment?'.$params);

但是,我遇到了新的障碍。

================================================ ==========================

我阅读了这篇文章并关注他的所作所为。

https://discussions.apple.com/thread/3089948?start=0&tstart=0

================================================ ==========================

数据已发送到我的服务器,但仍显示消息“无效配置文件”。

它不会重定向到移动网站。

【问题讨论】:

  • 杰克,我也遇到了同样的问题。拜托,你能告诉我你是如何创建这个 .moblieconfig 并编写代码获取设备的 UDID

标签: iphone safari


【解决方案1】:

你有没有尝试添加

header("Location: http://www.mysite.com/Results?data=".rawurlencode($data));

在代码的末尾?


openssl smime \
-sign \
-signer your-cert.pem \
-inkey your-priv-key.pem \
-certfile TheCertChain.pem \
-nodetach \
-outform der \
-in ConfigProfile.mobileconfig \
-out ConfigProfile_signed.mobileconfig

您需要的文件是:

your-cert.pem - 这是您获得的证书

your-priv-key.pem - 这是你的私钥

TheCertChain.pem – 这是证书链(在某些情况下是可选的)

ConfigProfile.mobileconfig - 这是您的配置文件的未签名副本

更详细的here

【讨论】:

  • 是的,我把标题代码放在最后。 header('位置:mywebsite.com/enrollment?'.$params);
  • 我觉得标题代码有助于将屏幕移回网站,但它不会以某种方式工作:(
  • 你有它在公共访问?这样我就可以追踪请求?
  • 不幸的是,我正在运行本地服务器。你以前试过这个吗?
  • 就是这样 :( 我找不到在我的个人资料上签名的说明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 2019-02-27
相关资源
最近更新 更多