问题
I'm developing an app for my company and we're going through the process of slowly letting people into the "beta" by adding their iPads to the company's iOS Dev Center accounts. From there we do an ad hoc build for local Intranet distribution.
At my last gig, I would direct people to one of those "find my UDID for me" apps, then get them to send me the UDID it found.
iOS 7 has cut this off - those apps are all gone now and if you do still have one, it returns some GUID that has nothing to do with the UDID.
So what I'm having to do is connect each of these things to my Mac, then get the UDID from iTunes, which is kind of a hassle (but less tedious than trying to explain to them how to get it from iTunes, assuming they even have it installed). And sometimes it tries to sync with my Mac, which doesn't seem to have any effect other than putting on provisioning profiles I don't want on the device. And at least once I've had an iPad just suddenly decide to upgrade itself from iOS 6 to iOS 7 which I'm not sure is related to being plugged in (and in this case the user didn't want it upgraded).
So is there any other way to get the UDID from the iPad other than plugging it into a machine?
TO BE CLEAR: I'm not trying to get the UDID in an app, I'm just trying to think of the quickest way to get the UDID to add to the device list in our developer profile for distribution.
回答1:
Here's my research results:
Apple has hidden the UDID from all public APIs, starting with iOS 7. Any UDID that begins with FFFF is a fake ID. The "Send UDID" apps that previously worked can no longer be used to gather UDID for test devices. (sigh!)
The UDID is shown when a device is connected to XCode (in the organizer), and when the device is connected to iTunes (although you have to click on 'Serial Number' to get the Identifier to display.
If you need to get the UDID for a device to add to a provisioning profile, and can't do it yourself in XCode, you will have to walk them through the steps to copy/paste it from iTunes.
UPDATE -- see okiharaherbst's answer below for a script based approach to allow test users to provide you with their device UDIDs by hosting a mobileconfig file on a server
回答2:
Navigate to http://get.udid.io/ from Safari on your iOS device. It works like a charm and requires neither iTunes nor any other computer. No app installed either.
EDIT:
Also, have a look at Getting a device UDID from .mobileconfig if you (understandably) would rather have this .mobileconfig certificate hosted on a server of yours.
MAKE YOUR OWN:
Have a copy of the .mobileconfig example hosted on your server and write 2-3 small scripts in your favorite language to handle the following flow:
- Navigate on Safari to a URL redirecting to enroll.mobileconfig below. This makes iOS open the Settings app and show the profile.
- Upon accepting the profile, iOS switches back to Safari and posts the DeviceAttributes array to the URL specified enroll.mobileconfig.
- The POST data will contain a .plist file with the requested attributes (see example below). One of which will be the holy UDID.
Remark: You should probably have some user friendly messages. Specifically, we even have a step 0. where the user is asked to provide their name and e-mail that we store temporarily in the HTTP session and then redirect the request to the mobileconfig profile. We ultimately match this info with the iPhone data and send a friendly confirmation e-mail. 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>
sample .plist POSTed by the iPhone to the given 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>
回答3:
Hope this would help:
- Connect iPhone to your MAC(I didn't try this with windows)
- Click on Apple’s logo on the top left corner > select About This Mac
- In Overview tab > System Report
- Hardware in the left column > USB >
- then on right pane select iPhone
- in bottom pane -> "Serial number”
-> And that serial number is UDID
回答4:
If any of your users are running linux they can use this from a terminal:
lsusb -v 2> /dev/null | grep -e "Apple Inc" -A 2
This gets the all the information for your connected usb devices and prints lines with "Apple Inc" including the next 2 lines.
The result looks like this:
iManufacturer 1 Apple Inc.
iProduct 2 iPad
iSerial 3 7ddf32e17a6ac5ce04a8ecbf782ca509...
This has worked for me on iOS5 -> iOS7, I haven’t tried on any iOS4 devices though.
IMO this is faster then any Win/Mac/Browser solution I have found and requires no "software" installation.
回答5:
TestFlight seems to be able to extract the UDID once the user signs up:
https://testflightapp.com
回答6:
I have been using iPhone Configuration Utility to read the UDIDs and install the Development app. Still works fine on iOS7
回答7:
Plug it in, and run this from the command line:
system_profiler SPUSBDataType
Look for:
Serial Number: xxxx
回答8:
Have them create a testflightapp.com account.
This is very useful for beta testing - which I'm guessing is what you need the udids for.
You can send them a download link to your app (found in the permissions tap at the bottom of the page) and it will tell them their udid hasn't been validated yet. It will then tell them their udid! They can copy and paste this and text it to you.
回答9:
Found a nice way to handle it: Add the app to testFlight.com and give the link to the user you want his UDID. He will see an error message saying "your device UDID: xxxxxx is not registered" and the UDID will be the correct one.
回答10:
Try this online tool http://www.easy-udid.com. I tested it on various iOS devices (iOS 6 and 7) and it works fine. Handful tool to quickly add customer's UDID in developer's profile
回答11:
Please use test flight to obtain UDID from testers but not using untrusted source e.g. http://get.udid.io/
You can 1. Invite testers in email from test flight webpage. Testers open the link in email and install a profile from test flight. Therefore developers can obtain UDIDs on the test flight webpage. 2. Add those UDIDs on the Apple provisioning portal.
(Ref: http://help.testflightapp.com/customer/portal/articles/829537-how-does-it-work-)
The process doesn't require testers to use Mac/ PC to obtain UDID (more convenient). And I think test flight is a company that can be trusted (no worries when passing UDID to this company).
I have tested this method and it works on iOS 8.
回答12:
Steps to find the UDID from IPhone and IPad Without Using itunes
Open below link in your iPhone or iPad : - http://get.udid.io/
Click on the Button Green color - Tap to find UDID
Get your UDID will Appear, Click on the right side top INSTALL button
4 . UDID will appear Copy the UDID.
回答13:
I think iTunes looks to be the only answer, which is extremely unfortunate.
回答14:
Or use my solution here www.my-mo.co.uk/device/deviceinfo.php will let you access UDID and email it to whoever you choose too.
回答15:
If you are using a mac, you can get the UUID out of the "System Report" available from "About this Mac." With the device attached, open the USB section and click on iPhone. The UUID appears under "Serial Number"
回答16:
diawi.com has worked for me, no need for connecting iPhone with cable or etc.: just follow their "My Device" tab that will lead you to install their provision profile and then display the UDID and add option to send it by Email.
回答17:
Please use udid.io in your device browser Or Please install iTools and conncet the device to get the correct UDID.
Adarsh E M
回答18:
We can use identifierForVendor for ios7,
-(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;
}
--Important Note ---
UDID and identifierForVendor are different:---
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.
来源:https://stackoverflow.com/questions/19032162/is-there-a-way-since-ios-7s-release-to-get-the-udid-without-using-itunes-on-a