iOS7 以降では iOS アプリでの UDID 取得ができなくなり、UDID を確認するためには、
iTunes か iPhone 構成ユーティリティを利用して、Mac と iPhone を繋いで確認する必要がでてきました。
母艦がない状態でもウェブ経由で UDID を確認する方法です。
iPhone にプロファイルをインストールすることにより、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://www.example.com/udid.php</string> <key>DeviceAttributes</key> <array> <string>UDID</string> </array> </dict> <key>PayloadOrganization</key> <string>Example, Inc</string> <key>PayloadDisplayName</key> <string>Example.com UDID Service</string> <key>PayloadVersion</key> <integer>1</integer> <key>PayloadUUID</key> <string>9CF421B3-9836-4454-BC8A-982CBD3C943C</string> <key>PayloadIdentifier</key> <string>com.example.profile-service</string> <key>PayloadDescription</key> <string></string> <key>PayloadType</key> <string>Profile Service</string> </dict> </plist>
次に、http://www.example.com/udid.php のプログラムです。こちらは、端末から受け取ったレスポンスから UDID を抜き出して、画面に出力するコードとなります。こちらもウェブに配置します。
<?php if (isset($_GET["udid"])) { echo("<html><body><h1>"); echo($_GET["udid"]); echo("</h1></body></html>"); exit(); } $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 = ""; $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 "UDID": $udid = $arrayCleaned[$iterator+1]['value']; break; } $iterator++; } header("Location: ". $_SERVER["REQUEST_URI"] . "?udid=" . $udid, true, 301);
ウェブ経由で udid.mobileconfig にアクセスすると、プロファイルのインストールを促され、インストールすると画面上に UDID が表示されます。