自从iOS 7发布以来,是否有一种方法可以在PC / Mac上不使用iTunes的情况下获取UDID?


80

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

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

iOS 7已经切断了这些功能-这些应用程序现在已经全部消失,如果您仍然有一个应用程序,它将返回一些与UDID无关的GUID。

因此,我要做的就是将所有这些东西都连接到Mac,然后从iTunes获取UDID,这很麻烦(但要尝试向他们解释如何从iTunes获取它,要比向他们解释如何从烦人要乏味得多甚至已安装)。有时它会尝试与我的Mac进行同步,除了在设备上放置我不想要的配置文件外,这似乎没有任何作用。而且至少在我拥有iPad之后,我突然决定将自己从iOS 6升级到iOS 7,但我不确定这与插入电源有关(在这种情况下,用户不希望对其进行升级)。

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

明确说明:我不是在尝试在应用程序中获取UDID,而是在尝试考虑最快的方法来将UDID添加到我们的开发人员资料中的设备列表中以进行分发。


whatsmyudid.com:D您可以说,在AppStore上下载UDID应用程序并向我发送电子邮件。您没有别的选择..
乔丹蒙特尔

1
@JordanMontel是一个不错的网站,尽管它使用的iTunes版本不再与外观/感觉匹配,并且copy命令假定您正在运行Mac。自iOS 7以来,UDID应用程序不再提供有效的UDID
Tom Kidd 2013年

2
哦,是的,我记得在iOS 7上...从应用发送的UDID以FFFF开头...因此,唯一的解决方案是将设备插入iTunes:s
Jordan Montel

我在同一条船上-我为多个客户开发应用程序,并且不确定如果我不能让他们通过电子邮件向UDID发送电子邮件,Apple希望我们如何添加用于内部测试的设备!
软件

2
TestFlight通过使用配置文件以某种方式在iOS 7设备上实现了这一目标。可能会研究它是如何工作的。
杰西·鲁萨克

Answers:


74

这是我的研究结果:

从iOS 7开始,Apple从所有公共API中都隐藏了UDID。任何以FFFF开头的UDID都是伪造的ID。先前无法使用的“发送UDID”应用程序无法再用于收集测试设备的UDID。(叹!)

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

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

更新-有关基于脚本的方法,请参见下面的okiharaherbst的答案,该方法允许测试用户通过在服务器上托管mobileconfig文件来向您提供其设备的UDID。


200
是否曾经有过Apple讨厌开发人员的感觉?
ryan0

15
“您将必须引导他们完成从iTunes复制/粘贴的步骤”。该网站可能会有所帮助:whatsmyudid.com
Guillaume Algis

完全是答案。我拥有UDID的用户中有一半是假用户,而这些人是无法安装我的开发应用程序的人
bentedder 2013年

如果您对此有疑问,请添加苹果文档链接。
Praveenkumar 2014年

2
右键单击该值可复制值(itunes的Windows版本-不确定mac版本)
软件

103

从iOS设备上的Safari浏览至http://get.udid.io/。它的工作原理很简单,不需要iTunes或任何其他计算机。也没有安装任何应用程序。

编辑:

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

自己承担:

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

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

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

enroll.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>

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

<?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>

1
我知道,为自己/客户使用设置类似的服务仅需单击几下即可。
VH-NZZ

9
不要使用此站点,因为它会导致您安装配置文件服务,该服务可以使站点所有者可以访问您的数据。
清单

1
@清单:我不同意。两件事,一句话,一句话:1st。见上文我的编辑。隐私问题。2号。没有iPhone的UUID有什么用?备注:该配置文件无法使您的“数据可供站点所有者访问”,甚至不会保持安装状态。你能详细说明吗?评论:如果您有一种更简单的方法来检索UUID,我在听。如果您担心自己的UUID会被发送回来并返回给您的电子邮件,请通过SSL托管您自己的服务。附带说明:将iPhone插入iTunes也会将您的数据发送到Apple(可能还会发送到N $ @)。
VH-NZZ 2014年

4
你好 将您的数据发送到Apple和将其发送到未知网站之间是有区别的。关于在设备上安装配置文件的警告很多,因为它们会拦截您的数据。我不会那样做。
清单

3
@checklist:在网上发布任何内容都存在合理的顾虑。同样,如果您不方便使用该便利服务,那就是FINE。答案的EDIT部分告诉您如何制作自己的内容,从而在保持其简单性的同时减轻了您的所有烦恼。HTH。
VH-NZZ 2014年

17

希望这会有所帮助:

  1. 将iPhone连接到您的MAC(我没有在Windows上尝试过)
  2. 单击左上角的Apple徽标>选择关于本机
  3. 概述选项卡>系统报告中
  4. 左栏中的硬件> USB >
  5. 然后在右窗格中选择iPhone
  6. 在底部窗格中->“序列号

->那个序列号是UDID


现在,这就是为什么我喜欢StackOverflow的原因:)感谢您提供的出色解决方案。
Jean Le Moignan '16

1
单击序列号后,它将更改为UDID
Vishal

13

如果您的任何用户正在运行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解决方案都快,不需要安装任何“软件”。


1
您可以确认“ iSerial” == UDID吗?
软件演变

我一直使用它作为Apple开发中心上的UDID,以很好地创建开发配置文件。
2014年

1
有什么办法在Win上做这样的事情?
Nicolas Barbulesco 2014年


4

我一直在使用iPhone Configuration Utility读取UDID并安装Development app。在iOS7上仍然可以正常使用


1
最初的问题提到不使用iTunes,但他们确实在问:“有没有没有手持设备或强迫用户安装Apple软件的方式来获得UDID?” 而这个答案未能通过测试
软件

我喜欢这个解决方案。在Windows上需要管理吗?
Nicolas Barbulesco 2014年

las,我需要Windows管理员才能在Windows上安装iPhone Configuration Utility 3.6.2。不要问我,为什么必须使用PC才能管理安装iPhone的工具...
Nicolas Barbulesco 2014年

3

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

system_profiler SPUSBDataType

寻找:

Serial Number: xxxx

1
凉!我喜欢这个解决方案。谢谢。我在结尾处附加了一些awk,以生成易于扫描的清单:system_profiler SPUSBDataType | awk '/:$/{sub(/^ */,"");name=$0}/Serial Number:/{id=$3;print name,id}'
Todd Lehman 2014年

真好 但是这个答案需要更多细节。插入哪里?我有个主意... ;-)
Nicolas Barbulesco 2015年

2

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

这对于Beta测试非常有用-我猜这是您需要使用udids的目的。

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


2

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


1

试试这个在线工具http://www.easy-udid.com。我在各种iOS设备(iOS 6和7)上对其进行了测试,并且工作正常。简便的工具,可在开发人员资料中快速添加客户的UDID


2
但是此站点要求我安装“配置文件”。iOS警告我,这样做会修改我的设置。我不喜欢
Nicolas Barbulesco 2014年

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上使用。


1
udid.io有害吗?
伊万卡·托多罗娃

1

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

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

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

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

4。UDID将出现复制UDID。


0

我认为iTunes似乎是唯一的答案,这是非常不幸的。


你看过答案了吗?您可以使用系统信息,iPhone配置实用工具中,get.udid.io网页,和组织者,testflight .....
莱特曼

0

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


1
尊敬的未来人们,此解决方案可与iOS 7.1一起使用。
Nicolas Barbulesco 2014年

1
当然可以,或者您可以使用此域来访问相同的功能www.my-udid.com
Alex McPherson

太糟糕了。此解决方案不再起作用。地址给出错误:404,未找到。
Nicolas Barbulesco,2015年

0

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


0

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


-3

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

阿达什EM


2
“我们希望您是测试人员或移动应用程序开发人员,或者是其中的一种。” 嗯,没有冒犯性,但是该站点看起来有点阴暗,未签名的配置文件也不是很令人满意。更不用说我不确定他们如何获得UDID了-Tom
Kidd

如果站点或工具没有越狱,则不再有任何允许站点或工具从设备中检索真实UDID的机制。我会避免使用任何其他解决方案
软件是由

@Schnapple该站点利用了通常由MDM使用的配置配置文件(但也被TestFlight之类的服务使用)来检索UDID。我同意未签名的部分,但除此之外,它不会造成任何问题。你可以仍然从iOS设备获得UDID,刚刚从一个应用程序中没有; UDID仍在MDM中广泛使用。
Calrion

1
对移动设备管理(MDM)系统进行了一些研究。API文档仅发布给Enterprise Developers,但是据报告它支持检索UDID的机制,因此我在前面的声明(“站点或工具不再具有从设备检索真实UDID的任何认可机制”)是错的。
软件

iTools?Mac OS 9又回来了?:-)
Nicolas Barbulesco 2014年

-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.

2
我不是在寻找可以在应用程序中标识设备的东西,而是在寻找一种方法来获取UDID,而无需使用设备本身来将其添加到临时配置文件中。越来越多的人从未将其iOS设备直接同步到计算机-该设备可以自我更新,通过iCloud同步设置等,有时同步到iTunes会使一切混乱。答案似乎是“不”
Tom Kidd 2013年

我可以在iPhone中键入所有内容吗?^^在哪里?会给我我的UDID吗?我认为此答案不能回答以下问题:如何获取iPhone的UDID?
Nicolas Barbulesco,2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.