有没有一种方法(iOS 7的发布)以获得UDID,而不使用PC / Mac上的iTunes?
我正在为我的公司开发一个应用程序,我们正在通过将他们的iPad添加到公司的iOS开发中心帐户,慢慢让人们进入“testing版”。 从那里我们为本地Intranet分发做一个专门的构build。
在我最后的演出中,我会把人们引导到其中一个“为我find我的UDID”应用程序,然后让他们发送它find的UDID。
iOS 7截断了这些 – 这些应用程序现在都消失了,如果你还有一个,它会返回一些与UDID无关的GUID。
所以我必须做的是将这些东西连接到我的Mac,然后从iTunes获得UDID,这是一个麻烦(但比试图向他们解释如何从iTunes得到它,而不是乏味,假设他们甚至有它安装)。 有时它会尝试与我的Mac进行同步,除了在设备上放置不需要的configuration文件外,这似乎没有任何效果。 至less有一次,我有一个iPad突然决定从iOS 6升级到iOS 7,我不知道是否与被插入(在这种情况下,用户不希望它升级)有关。
那么除了将它插入机器之外,还有其他的方法可以从iPad获得UDID吗?
要清楚:我没有试图在应用程序中获得UDID,我只是试图想到将UDID添加到我们的开发人员configuration文件中的设备列表中的最快捷方式。
这是我的研究成果:
苹果已经从iOS 7开始隐藏了所有公共API的UDID。以FFFF开头的任何UDID都是伪造的ID。 先前工作的“发送UDID”应用程序不能再用于收集testing设备的UDID。 (叹!)
当设备连接到XCode(位于pipe理器中)时,以及设备连接到iTunes时(虽然必须单击“序列号”才能显示标识符),将显示UDID。
如果您需要将设备的UDID添加到configuration文件,并且无法在XCode中自行完成,则必须通过步骤从iTunes复制/粘贴。
更新 – 请参阅下面的okiharaherbst的答案基于脚本的方法,以允许testing用户通过在服务器上托pipemobileconfig文件为您提供设备UDID
在iOS设备上从Safari导航到http://get.udid.io/ 。 它像一个魅力,不需要iTunes或任何其他电脑。 没有应用程序安装。
编辑:
此外,看看如何从.mobileconfig获取设备的UDID,如果你(可以理解)宁愿有这个.mobileconfig证书托pipe在你的服务器上。
让你自己:
在您的服务器上托pipe.mobileconfig示例的副本,并使用您最喜欢的语言编写2-3个小脚本,以处理以下stream程:
- 在Safari上导航到下面的redirect到enroll.mobileconfig的URL。 这使iOS打开设置应用程序,并显示configuration文件。
- 接受configuration文件后,iOS切换回Safari并将DeviceAttributes数组发送到指定的enroll.mobileconfig。
- POST数据将包含具有所请求的属性的.plist文件(请参阅下面的示例)。 其中之一将是神圣的UDID。
备注:您应该有一些用户友好的消息。 具体而言,我们甚至有一个步骤0,要求用户提供我们暂时存储在HTTP会话中的名称和电子邮件,然后将请求redirect到mobileconfigconfiguration文件。 我们最终将这些信息与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>
示例.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>
希望这会有所帮助:
- 连接iPhone到你的MAC (我没有试过这个Windows)
- 点击左上angular的苹果徽标 >select关于本机
- 在概览选项卡> 系统报告
- 硬件在左栏> USB >
- 然后在右侧窗格中selectiPhone
- 在底部窗格中 – >“ 序列号 ”
– >那个序列号是UDID
如果你的任何用户正在运行linux,他们可以在terminal上使用它:
lsusb -v 2> /dev/null | grep -e "Apple Inc" -A 2
这将获得连接的USB设备的所有信息,并用“Apple Inc”打印行,包括接下来的两行。
结果如下所示:
iManufacturer 1 Apple Inc. iProduct 2 iPad iSerial 3 7ddf32e17a6ac5ce04a8ecbf782ca509...
这对我在iOS5 – > iOS7上工作,但我还没有在任何iOS4设备尝试。
国际海事组织这是比我find的任何Win / Mac / Browser解决scheme更快,不需要“软件”安装。
一旦用户注册,TestFlight似乎能够提取UDID:
我一直在使用iPhoneconfiguration实用程序来读取UDID并安装开发应用程序。 在iOS7上仍然可以正常工作
插入,并从命令行运行:
system_profiler SPUSBDataType
寻找:
Serial Number: xxxx
让他们创build一个testflightapp.com帐户。
这对betatesting非常有用 – 我猜测你是需要udids的。
您可以将它们的下载链接发送到您的应用程序(在页面底部的权限点击中find),它会告诉他们他们的udid还没有被validation。 它会告诉他们他们的udid! 他们可以复制和粘贴这个文本给你。
find一个很好的方法来处理它:添加应用程序到testFlight.com,并给你想要他的UDID的用户的链接。 他会看到一条错误消息,说明“您的设备UDID:xxxxxx未注册”,UDID将是正确的。
试试这个在线工具http://www.easy-udid.com 。 我testing了各种iOS设备(iOS 6和7),它工作正常。 在开发人员的configuration文件中快速添加客户的UDID的工具
请使用testing飞行从testing人员获取UDID,但不使用不受信任的源,例如http://get.udid.io/
您可以1.通过testing航class网页的电子邮件邀请testing人员。 testing人员打开电子邮件中的链接并从testing航class安assembly置文件。 因此开发者可以在testing网页上获取UDID。 2.在Appleconfiguration门户上添加这些UDID。
(参考: http : //help.testflightapp.com/customer/portal/articles/829537-how-does-it-work- )
该过程不需要testing人员使用Mac / PC来获取UDID(更方便)。 而且我认为testing飞行是一个值得信赖的公司(在将UDID传递给这家公司时不用担心)。
我已经testing了这个方法,它可以在iOS 8上运行。
我认为iTunes是唯一的答案,这是非常不幸的。
或者在这里使用我的解决schemewww.my-mo.co.uk/device/deviceinfo.php将允许您访问UDID并将其发送给您select的任何人。
如果您使用的是Mac,则可以从“关于本Mac”中的“系统报告”中获取UUID。 连接设备后,打开USB部分并点击iPhone。 UUID显示在“序列号”下
diawi.com已经为我工作,不需要连接iPhone或电缆等:只需按照他们的“我的设备”选项卡,将导致您安装他们的configuration文件,然后显示UDID和添加选项,通过电子邮件发送。
在不使用iTunes的情况下,从iPhone和iPad中查找UDID的步骤
-
在iPhone或iPad中打开下面的链接: – http://get.udid.io/
-
点击button绿色 – 点击查找UDID
-
得到你的UDID将出现,点击右侧顶部的INSTALLbutton
4。 将出现UDID复制UDID。
请在您的设备浏览器中使用udid.io或者请安装iTools并使设备正确以获取正确的UDID。
Adarsh EM
我们可以为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.