82

我正在为我的公司开发一个应用程序,我们正在通过将他们的 iPad 添加到公司的 iOS 开发中心帐户来慢慢让人们进入“测试版”的过程。从那里我们为本地 Intranet 分发进行临时构建。

在我的最后一次演出中,我会引导人们使用其中一个“为我找到我的 UDID”应用程序,然后让他们将它找到的 UDID 发送给我。

iOS 7 已经取消了这一点——这些应用程序现在都消失了,如果你还有一个,它会返回一些与 UDID 无关的 GUID。

所以我要做的就是将这些东西都连接到我的 Mac,然后从 iTunes 获取 UDID,这有点麻烦(但比尝试向他们解释如何从 iTunes 获取它更乏味,假设他们甚至安装它)。有时它会尝试与我的 Mac 同步,除了在设备上放置我不想要的配置文件之外,这似乎没有任何影响。至少有一次我有一台 iPad 突然决定将自己从 iOS 6 升级到 iOS 7,我不确定这是否与插入有关(在这种情况下,用户不希望它升级)。

那么除了将其插入机器之外,还有其他方法可以从 iPad 获取 UDID 吗?

明确一点:我不是想在应用程序中获取 UDID,我只是想考虑将 UDID 添加到我们的开发人员配置文件中的设备列表以进行分发的最快方法。

4

18 回答 18

106

从 iOS 设备上的 Safari导航到http://get.udid.io/。它就像一个魅力,既不需要 iTunes 也不需要任何其他计算机。也没有安装应用程序。

编辑:

另外,如果您(可以理解)希望将此 .mobileconfig 证书托管在您的服务器上,请查看从 .mobileconfig 获取设备 UDID 。

做你自己的:

将 .mobileconfig 示例的副本托管在您的服务器上,并用您喜欢的语言编写 2-3 个小脚本来处理以下流程:

  1. 在 Safari 上导航到重定向到下面的enroll.mobileconfig的 URL 。这使得 iOS 打开设置应用程序并显示配置文件。
  2. 接受配置文件后,iOS 切换回 Safari,并将 DeviceAttributes 数组发布到指定的 URL 注册.mobileconfig。
  3. POST 数据将包含一个带有请求属性的 .plist 文件(参见下面的示例)。其中之一将是神圣的 UDID。

备注:您可能应该有一些用户友好的消息。具体来说,我们甚至有一个步骤 0。要求用户提供我们临时存储在 HTTP 会话中的姓名和电子邮件,然后将请求重定向到 mobileconfig 配置文件。我们最终将此信息与 iPhone 数据进行匹配,并发送一封友好的确认电子邮件。HTH。

注册.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://support.devcorp.com/uuid/returnurl/</string>
            <key>DeviceAttributes</key>
            <array>
            <string>DEVICE_NAME</string>
            <string>UDID</string>
            <string>PRODUCT</string>
            <string>VERSION</string>
            <string>SERIAL</string>
            </array>
        </dict>
        <key>PayloadOrganization</key>
        <string>DevCorp Inc.</string>
        <key>PayloadDisplayName</key>
        <string>Profile Service</string>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadUUID</key>
        <string>C5FB9D0D-0BE7-4F98-82CC-5D0EA74F8CF8</string> <!-- any random UUID -->
        <key>PayloadIdentifier</key>
        <string>com.devcorp.profile-service</string>
        <key>PayloadDescription</key>
        <string>This is a temporary profile to enroll your device for ad-hoc app distribution</string>
        <key>PayloadType</key>
        <string>Profile Service</string>
    </dict>
</plist>

示例 .plist 由 iPhone 发布到给定的 URL

<?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>PRODUCT</key>
    <string>iPhone4,1</string>
    <key>SERIAL</key>
    <string>DNPGWR2VCTC0</string>
    <key>UDID</key>
    <string>b01ea7bc2237fed21bfe403c6d2b942ddb3c12c3</string>
    <key>VERSION</key>
    <string>11A465</string>
</dict>
于 2013-12-12T14:57:46.803 回答
73

这是我的研究结果:

从 iOS 7 开始,Apple 已经对所有公共 API 隐藏了 UDID。任何以 FFFF 开头的 UDID 都是假 ID。以前工作的“发送 UDID”应用程序不能再用于为测试设备收集 UDID。(叹!)

当设备连接到 XCode(在管理器中)和设备连接到 iTunes 时,会显示 UDID(尽管您必须单击“序列号”才能显示标识符。

如果您需要获取设备的 UDID 以添加到配置文件中,并且无法在 XCode 中自己完成,则必须引导他们完成从 iTunes 复制/粘贴它的步骤。

更新 - 请参阅下面的 okiharaherbst 的答案,了解基于脚本的方法,允许测试用户通过在服务器上托管 mobileconfig 文件为您提供他们的设备 UDID

于 2013-09-27T00:18:56.417 回答
18

希望这会有所帮助:

  1. 将 iPhone 连接到你的MAC(我没有在 windows 上尝试过)
  2. 单击左上角的Apple 徽标> 选择About This Mac
  3. 概览选项卡 >系统报告中
  4. 左栏中的硬件> USB >
  5. 然后在右窗格中选择iPhone
  6. 在底部窗格中 ->“序列号”</li>

-> 并且那个序列号是UDID

于 2014-12-04T11:08:23.847 回答
15

如果您的任何用户正在运行 linux,他们可以从终端使用它:

lsusb -v 2> /dev/null | grep -e "Apple Inc" -A 2

这将获取您连接的 USB 设备的所有信息,并打印带有“Apple Inc”的行,包括接下来的 2 行。

结果如下所示:

iManufacturer           1 Apple Inc.
iProduct                2 iPad
iSerial                 3 7ddf32e17a6ac5ce04a8ecbf782ca509...

这在 iOS5 -> iOS7 上对我有用,不过我还没有在任何 iOS4 设备上尝试过。

IMO 这比我找到的任何 Win/Mac/Browser 解决方案都快,并且不需要“软件”安装。

于 2014-02-03T08:01:40.023 回答
5

一旦用户注册,TestFlight 似乎能够提取 UDID:

https://testflightapp.com

于 2013-11-11T17:24:04.853 回答
4

我一直在使用 iPhone 配置实用程序来读取 UDID 并安装开发应用程序。在 iOS7 上仍然可以正常工作

于 2013-10-17T14:36:58.020 回答
3

插入它,然后从命令行运行它:

system_profiler SPUSBDataType

寻找:

Serial Number: xxxx
于 2014-09-26T07:05:56.830 回答
2

让他们创建一个testflightapp.com帐户。

这对于 beta 测试非常有用——我猜这就是你需要 udids 的目的。

您可以向他们发送一个下载链接到您的应用程序(在页面底部的权限点击中找到),它会告诉他们他们的 udid 尚未经过验证。然后它会告诉他们他们的 udid!他们可以复制并粘贴此内容并将其发送给您。

于 2013-12-05T18:25:02.550 回答
2

找到了一种处理它的好方法:将应用程序添加到 testFlight.com 并将链接提供给您想要其 UDID 的用户。他会看到一条错误消息,上面写着“您的设备 UDID:xxxxxx 未注册”,并且 UDID 将是正确的。

于 2014-01-05T09:16:03.760 回答
1

试试这个在线工具http://www.easy-udid.com。我在各种 iOS 设备(iOS 6 和 7)上对其进行了测试,效果很好。用于在开发人员资料中快速添加客户 UDID 的实用工具

于 2014-01-20T13:51:36.420 回答
1

请使用试飞从测试人员那里获取 UDID,但不要使用不受信任的来源,例如http://get.udid.io/

您可以 1. 从试飞网页通过电子邮件邀请测试人员。测试人员打开电子邮件中的链接并从试飞中安装配置文件。因此开发者可以在试飞网页上获取UDID。2. 在 Apple 供应门户上添加这些 UDID。

(参考:http ://help.testflightapp.com/customer/portal/articles/829537-how-does-it-work- )

该过程不需要测试人员使用Mac/PC来获取UDID(更方便)。而且我觉得试飞是一家值得信赖的公司(把UDID传给这家公司时不用担心)。

我已经测试过这种方法,它适用于 iOS 8。

于 2014-11-11T03:29:40.560 回答
1

在不使用 iTunes 的情况下从 iPhone 和 iPad 查找 UDID 的步骤

  1. 在您的 iPhone 或 iPad 中打开以下链接:- http://get.udid.io/

  2. 单击绿色按钮 - 点击查找 UDID

  3. 获取您的 UDID 将出现,单击右侧顶部的 INSTALL 按钮

4. 将出现 UDID 复制 UDID。

于 2017-03-20T11:46:59.437 回答
0

我认为 iTunes 看起来是唯一的答案,这是非常不幸的。

于 2013-10-07T15:35:22.183 回答
0

或者在这里使用我的解决方案www.my-mo.co.uk/device/deviceinfo.php将让您访问 UDID 并将其通过电子邮件发送给您选择的任何人。

于 2014-02-17T19:30:34.863 回答
0

如果您使用的是 Mac,则可以从“关于此 Mac”中的“系统报告”中获取 UUID。连接设备后,打开 USB 部分并单击 iPhone。UUID 出现在“序列号”下

于 2014-11-12T03:27:23.603 回答
0

diawi.com 为我工作,无需使用电缆或其他设备连接 iPhone:只需按照他们的“我的设备”选项卡,将引导您安装他们的配置文件,然后显示 UDID 并添加选项以通过电子邮件发送。

于 2016-08-06T11:27:41.110 回答
-2

请在您的设备浏览器中使用udid.io或者请安装iTools并连接设备以获得正确的 UDID。

阿达什 EM

于 2013-10-09T11:36:57.960 回答
-4

我们可以为 ios7使用identifierForVendor ,

-(NSString*)uniqueIDForDevice
{
    NSString* uniqueIdentifier = nil;
    if( [UIDevice instancesRespondToSelector:@selector(identifierForVendor)] ) { // >=iOS 7
        uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    } else { //<=iOS6, Use UDID of Device       
            CFUUIDRef uuid = CFUUIDCreate(NULL);
            //uniqueIdentifier = ( NSString*)CFUUIDCreateString(NULL, uuid);- for non- ARC
            uniqueIdentifier = ( NSString*)CFBridgingRelease(CFUUIDCreateString(NULL, uuid));// for ARC
            CFRelease(uuid);
         }
    }
return uniqueIdentifier;
}

- 重要的提示 - -

UDID 和 identifierForVendor 不同:---

1.) On uninstalling  and reinstalling the app identifierForVendor will change.

2.) The value of identifierForVendor remains the same for all the apps installed from the same vendor on the device.

3.) The value of identifierForVendor also changes for all the apps if any of the app (from same vendor) is reinstalled.
于 2013-12-03T09:17:11.797 回答