Có cách nào kể từ (bản phát hành iOS 7) để lấy UDID mà không cần sử dụng iTunes trên PC / Mac không?


80

Tôi đang phát triển một ứng dụng cho công ty của mình và chúng tôi đang tiến hành quá trình từ từ cho phép mọi người vào "bản beta" bằng cách thêm iPad của họ vào tài khoản Trung tâm nhà phát triển iOS của công ty. Từ đó, chúng tôi thực hiện một bản dựng đặc biệt để phân phối Intranet cục bộ.

Vào buổi biểu diễn cuối cùng của tôi, tôi sẽ hướng mọi người đến một trong những ứng dụng "tìm UDID của tôi cho tôi", sau đó yêu cầu họ gửi cho tôi UDID đã tìm thấy.

iOS 7 đã loại bỏ điều này - những ứng dụng đó hiện đã biến mất và nếu bạn vẫn còn một ứng dụng, nó sẽ trả về một số GUID không liên quan gì đến UDID.

Vì vậy, những gì tôi phải làm là kết nối từng thứ này với máy Mac của tôi, sau đó lấy UDID từ iTunes, điều này hơi phức tạp (nhưng ít tẻ nhạt hơn là cố gắng giải thích cho họ cách lấy nó từ iTunes, giả sử họ thậm chí đã cài đặt nó). Và đôi khi nó cố gắng đồng bộ hóa với máy Mac của tôi, điều này dường như không có bất kỳ tác dụng nào ngoài việc đưa vào các cấu hình cấp phép mà tôi không muốn trên thiết bị. Và ít nhất một lần tôi đã có một chiếc iPad đột nhiên quyết định tự nâng cấp từ iOS 6 lên iOS 7 mà tôi không chắc có liên quan đến việc được cắm hay không (và trong trường hợp này là người dùng không muốn nó được nâng cấp).

Vậy có cách nào khác để lấy UDID từ iPad ngoài cắm vào máy không?

RÕ RÀNG: Tôi không cố lấy UDID trong một ứng dụng, tôi chỉ đang cố nghĩ cách nhanh nhất để lấy UDID thêm vào danh sách thiết bị trong hồ sơ nhà phát triển của chúng tôi để phân phối.


whatsmyudid.com : D bạn có thể nói, tải xuống trên AppStore một Ứng dụng UDID và gửi e-mail cho tôi. Bạn không cần phải lựa chọn nào khác ..
Jordan Montel

1
@JordanMontel đó là một trang web thú vị, mặc dù nó đang sử dụng phiên bản iTunes cũ không còn phù hợp với giao diện và lệnh sao chép giả sử bạn đang chạy máy Mac. Và UDID các ứng dụng không còn cung cấp cho một UDID hợp lệ kể từ khi iOS 7
Tom Kidd

2
Ồ vâng Tôi nhớ rằng với iOS 7 ... các UDID gửi từ khi bắt đầu ứng dụng với FFFF ... Vì vậy, giải pháp duy nhất là để cắm các thiết bị trên iTunes: s
Jordan Montel

Tôi ở cùng một con thuyền - tôi phát triển ứng dụng cho một số khách hàng và không chắc Apple mong đợi chúng tôi thêm thiết bị để thử nghiệm nội bộ như thế nào nếu tôi không thể yêu cầu họ gửi UDID qua email cho tôi!
phần mềm phát triển

2
TestFlight đang giải quyết vấn đề này bằng cách nào đó với các thiết bị iOS 7 bằng cách sử dụng cấu hình. Có thể nhìn vào cách nó hoạt động.
Jesse Rusak

Câu trả lời:


74

Đây là kết quả nghiên cứu của tôi:

Apple đã ẩn UDID khỏi tất cả các API công khai, bắt đầu từ iOS 7. Bất kỳ UDID nào bắt đầu bằng FFFF đều là ID giả. Các ứng dụng "Gửi UDID" từng hoạt động trước đây không còn có thể được sử dụng để thu thập UDID cho các thiết bị thử nghiệm. (thở dài!)

UDID được hiển thị khi một thiết bị được kết nối với XCode (trong trình tổ chức) và khi thiết bị được kết nối với iTunes (mặc dù bạn phải nhấp vào 'Số sê-ri' để Mã định danh hiển thị.

Nếu bạn cần lấy UDID cho thiết bị để thêm vào hồ sơ cấp phép và không thể tự thực hiện trong XCode, bạn sẽ phải hướng dẫn chúng qua các bước để sao chép / dán nó từ iTunes.

CẬP NHẬT - xem câu trả lời của okiharaherbst bên dưới để biết cách tiếp cận dựa trên tập lệnh nhằm cho phép người dùng thử nghiệm cung cấp cho bạn UDID thiết bị của họ bằng cách lưu trữ tệp mobileconfig trên máy chủ


200
Có bao giờ bạn có cảm giác rằng Apple ghét các nhà phát triển?
ryan0

15
"bạn sẽ phải hướng dẫn họ qua các bước để sao chép / dán nó từ iTunes". Trang web này có thể giúp một chút: whatsmyudid.com
Guillaume Algis

hoàn toàn là câu trả lời. một nửa số người sử dụng tôi có UDID cho là những người giả mạo, và đó là những người không thể cài đặt ứng dụng dev của tôi
bentedder

Vui lòng thêm liên kết tài liệu apple nếu bạn có về vấn đề này.
Praveenkumar

2
nhấp chuột phải vào giá trị cho phép bạn sao chép giá trị (phiên bản windows của itunes - không chắc chắn về phiên bản mac)
phần mềm phát triển

103

Điều hướng đến http://get.udid.io/ từ Safari trên thiết bị iOS của bạn. Nó hoạt động như một sự quyến rũ và không cần iTunes hay bất kỳ máy tính nào khác. Không có ứng dụng nào được cài đặt.

BIÊN TẬP:

Ngoài ra, hãy xem phần Lấy UDID thiết bị từ .mobileconfig nếu bạn (dễ hiểu) muốn có chứng chỉ .mobileconfig này được lưu trữ trên máy chủ của bạn.

LÀM CHO RIÊNG BẠN:

Có một bản sao của ví dụ .mobileconfig được lưu trữ trên máy chủ của bạn và viết 2-3 tập lệnh nhỏ bằng ngôn ngữ yêu thích của bạn để xử lý luồng sau:

  1. Điều hướng trên Safari đến URL chuyển hướng đến register.mobileconfig bên dưới. Điều này làm cho iOS mở ứng dụng Cài đặt và hiển thị hồ sơ.
  2. Sau khi chấp nhận hồ sơ, iOS sẽ chuyển trở lại Safari và đăng mảng DeviceAttributes lên URL được chỉ định register.mobileconfig.
  3. Dữ liệu POST sẽ chứa tệp .plist với các thuộc tính được yêu cầu (xem ví dụ bên dưới). Một trong số đó sẽ là UDID thần thánh.

Lưu ý: Bạn có thể nên có một số tin nhắn thân thiện với người dùng. Cụ thể, chúng tôi thậm chí có bước 0. nơi người dùng được yêu cầu cung cấp tên và e-mail mà chúng tôi lưu trữ tạm thời trong phiên HTTP và sau đó chuyển hướng yêu cầu đến hồ sơ mobileconfig. Cuối cùng, chúng tôi khớp thông tin này với dữ liệu iPhone và gửi một e-mail xác nhận thân thiện. HTH.

register.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 mẫu được ĐĂNG bởi iPhone tới URL nhất định

<?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
Tôi biết, và việc thiết lập một dịch vụ tương tự cho khách hàng / của riêng bạn sử dụng chỉ là một vài cú nhấp chuột.
VH-NZZ 21/12/13

9
KHÔNG sử dụng trang web này vì nó khiến bạn cài đặt dịch vụ Hồ sơ có thể làm cho dữ liệu của bạn có thể truy cập được đối với chủ sở hữu trang web.
danh sách kiểm tra

1
@checklist: Tôi không đồng ý. Hai điều, một nhận xét và một nhận xét: Thứ nhất . Xem chỉnh sửa của tôi ở trên. các vấn đề về quyền riêng tư. Thứ 2 . UUID của bạn tốt gì nếu không có iphone của bạn? Lưu ý : hồ sơ không làm cho dữ liệu của bạn có thể truy cập được đối với chủ sở hữu trang web, nó thậm chí sẽ không được cài đặt. Bạn có thể xây dựng? Nhận xét : nếu bạn có cách đơn giản hơn để lấy UUID, tôi đang lắng nghe. Nếu bạn lo lắng rằng UUID của bạn đang được gửi đi gửi lại email của bạn, thì hãy lưu trữ dịch vụ của riêng bạn qua SSL. Một lưu ý nhỏ : việc cắm iPhone của bạn với iTunes cũng gửi dữ liệu của bạn tới Apple (và có thể tới N $ @).
VH-NZZ

4
Chào. Có sự khác biệt giữa việc gửi dữ liệu của bạn tới Apple và gửi đến một trang web không xác định. Có rất nhiều cảnh báo về việc cài đặt cấu hình trên thiết bị của bạn vì chúng cho phép đánh chặn dữ liệu của bạn. Tôi sẽ không làm điều đó.
danh sách kiểm tra

3
@checklist: Có những lo lắng chính đáng khi có bất kỳ thứ gì bạn đăng trên mạng. Một lần nữa, nếu bạn không thoải mái khi sử dụng dịch vụ tiện lợi đó, đó là FINE. Phần CHỈNH SỬA của câu trả lời cho bạn biết cách làm của riêng bạn, do đó loại bỏ bất kỳ lo lắng nào bạn có thể có trong khi vẫn giữ được sự đơn giản của nó. HTH.
VH-NZZ

17

Hy vọng điều này sẽ giúp:

  1. Kết nối iPhone với MAC của bạn (Tôi đã không thử điều này với windows)
  2. Nhấp vào logo của Apple ở góc trên cùng bên trái> chọn About This Mac
  3. Trong tab Tổng quan > Báo cáo hệ thống
  4. Phần cứng ở cột bên trái> USB >
  5. sau đó ở khung bên phải chọn iPhone
  6. trong ngăn dưới cùng -> " Số sê-ri "

-> Và số sê-ri đó là UDID


Bây giờ, ĐÓ là lý do tại sao tôi yêu thích StackOverflow :) Cảm ơn vì giải pháp tuyệt vời này.
Jean Le Moignan

1
Sau khi nhấp vào Số sê-ri, nó thay đổi thành UDID
Vishal

13

Nếu bất kỳ người dùng nào của bạn đang chạy linux, họ có thể sử dụng điều này từ một thiết bị đầu cuối:

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

Thao tác này lấy tất cả thông tin về các thiết bị usb đã kết nối của bạn và in các dòng có "Apple Inc" bao gồm 2 dòng tiếp theo.

Kết quả trông như thế này:

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

Điều này đã hiệu quả với tôi trên iOS5 -> iOS7, mặc dù vậy, tôi chưa thử trên bất kỳ thiết bị iOS4 nào.

IMO này nhanh hơn bất kỳ giải pháp Win / Mac / Browser nào tôi đã tìm thấy và không yêu cầu cài đặt "phần mềm".


1
bạn có thể xác nhận rằng "iSerial" == UDID không?
phần mềm phát triển vào

Tôi đã sử dụng nó làm UDID trên trung tâm phát triển của Apple để tạo hồ sơ cấp phép phát triển tốt.
tổng hợp

1
Bất kỳ cách nào để làm một cái gì đó như thế này trên Win?
Nicolas Barbulesco

5

TestFlight dường như có thể trích xuất UDID khi người dùng đăng ký:

https://testflightapp.com


1
Tôi thứ hai điều này. Hiện tại, TestFlight là cách duy nhất để đi.
Blazor

Chúng ta phải làm gì đây ? Điều này có hoạt động với iOS 7.1 không? Tôi đã đọc rằng TestFlight không hoạt động nữa để lấy UDID.
Nicolas Barbulesco

4

Tôi đã sử dụng Tiện ích cấu hình iPhone để đọc UDID và cài đặt ứng dụng Phát triển. Vẫn hoạt động tốt trên iOS7


1
Câu hỏi ban đầu được đề cập là không sử dụng iTunes, nhưng họ thực sự đang hỏi "có cách nào để lấy UDID mà không cần thiết bị trong tay hoặc buộc người dùng cài đặt phần mềm của Apple không?" và câu trả lời này không thành công bài kiểm tra đó
phần mềm phát triển

Tôi thích giải pháp này. Nó có cần quản trị viên trên Windows không?
Nicolas Barbulesco

Rất tiếc, tôi cần quản trị viên Windows để cài đặt Tiện ích cấu hình iPhone 3.6.2 trên Windows. Đừng hỏi tôi tại sao bạn phải quản trị của máy tính để sử dụng một công cụ mà bộ lên iPhone ...
Nicolas Barbulesco

3

Cắm nó vào và chạy nó từ dòng lệnh:

system_profiler SPUSBDataType

Tìm kiếm:

Serial Number: xxxx

1
MÁT MẺ! Tôi thích giải pháp này. Cảm ơn bạn. Tôi gắn một số awk ở cuối dòng để tạo ra một danh sách dễ dàng quét được:system_profiler SPUSBDataType | awk '/:$/{sub(/^ */,"");name=$0}/Serial Number:/{id=$3;print name,id}'
Todd Lehman

Đẹp. Nhưng câu trả lời này cần chi tiết hơn. Cắm nó vào đâu? Tôi có một số ý tưởng ... ;-)
Nicolas Barbulesco

2

Yêu cầu họ tạo tài khoản testflightapp.com .

Điều này rất hữu ích cho thử nghiệm beta - mà tôi đoán là những gì bạn cần udid cho.

Bạn có thể gửi cho họ một liên kết tải xuống ứng dụng của bạn (được tìm thấy trong phần chạm vào quyền ở cuối trang) và nó sẽ cho họ biết udid của họ chưa được xác thực. Sau đó nó sẽ cho họ biết udid của họ! Họ có thể sao chép và dán nội dung này và gửi văn bản cho bạn.


2

Đã tìm thấy một cách hay để xử lý: Thêm ứng dụng vào testFlight.com và cung cấp liên kết cho người dùng bạn muốn UDID của họ. Anh ấy sẽ thấy thông báo lỗi cho biết "UDID thiết bị của bạn: xxxxxx chưa được đăng ký" và UDID sẽ là UDID chính xác.


1

Hãy thử công cụ trực tuyến này http://www.easy-udid.com . Tôi đã thử nghiệm nó trên các thiết bị iOS khác nhau (iOS 6 và 7) và nó hoạt động tốt. Công cụ hữu ích để nhanh chóng thêm UDID của khách hàng vào hồ sơ của nhà phát triển


2
Nhưng trang web này yêu cầu tôi cài đặt một "hồ sơ". Và iOS cảnh báo tôi rằng làm điều này sẽ sửa đổi cài đặt của tôi. Tôi không thích điều đó.
Nicolas Barbulesco

1

Vui lòng sử dụng chuyến bay thử nghiệm để lấy UDID từ người thử nghiệm nhưng không sử dụng nguồn không đáng tin cậy, ví dụ: http://get.udid.io/

Bạn có thể 1. Mời người thử nghiệm trong email từ trang web của chuyến bay thử nghiệm. Người thử nghiệm mở liên kết trong email và cài đặt hồ sơ từ chuyến bay thử nghiệm. Do đó, các nhà phát triển có thể lấy UDID trên trang web của chuyến bay thử nghiệm. 2. Thêm các UDID đó trên cổng cấp phép của Apple.

(Tham khảo: http://help.testflightapp.com/customer/portal/articles/829537-how-does-it-work- )

Quá trình này không yêu cầu người kiểm tra sử dụng Mac / PC để lấy UDID (thuận tiện hơn). Và tôi nghĩ chuyến bay thử nghiệm là một công ty có thể tin cậy (không phải lo lắng khi chuyển UDID cho công ty này).

Tôi đã thử nghiệm phương pháp này và nó hoạt động trên iOS 8.


1
Nó có hại udid.io không?
Ivanka Todorova,

1

Các bước tìm UDID từ IPhone và IPad mà không cần sử dụng itunes

  1. Mở liên kết dưới đây trong iPhone hoặc iPad của bạn: - http://get.udid.io/

  2. Nhấp vào màu Xanh lá cây của Nút - Nhấn để tìm UDID

  3. Lấy UDID của bạn sẽ xuất hiện, Nhấp vào nút CÀI ĐẶT phía trên bên phải

4 . UDID sẽ xuất hiện Sao chép UDID.


0

Tôi nghĩ rằng iTunes có vẻ là câu trả lời duy nhất, điều này cực kỳ đáng tiếc.


Bạn đã đọc câu trả lời chưa? Bạn có thể sử dụng thông tin hệ thống, tiện ích cấu hình iphone, các get.udid.io trang web, và tổ chức, testflight .....
Lightman

0

Hoặc sử dụng giải pháp của tôi tại đây www.my-mo.co.uk/device/deviceinfo.php sẽ cho phép bạn truy cập UDID và gửi nó qua email cho bất kỳ ai bạn chọn.


1
Kính gửi những người đến từ tương lai , giải pháp này hoạt động với iOS 7.1.
Nicolas Barbulesco

1
Chắc chắn là có hoặc bạn có thể sử dụng miền này để truy cập cùng một tính năng www.my-udid.com
Alex McPherson

Quá tệ. Giải pháp này không hoạt động nữa. Địa chỉ báo lỗi: 404, không tìm thấy.
Nicolas Barbulesco

0

Nếu bạn đang sử dụng máy Mac, bạn có thể lấy UUID ra khỏi "Báo cáo hệ thống" có sẵn từ "Giới thiệu về máy Mac này". Với thiết bị được gắn vào, mở phần USB và nhấp vào iPhone. UUID xuất hiện trong "Số sê-ri"


0

diawi.com đã làm việc cho tôi, không cần kết nối iPhone bằng cáp hoặc v.v.: chỉ cần làm theo tab "Thiết bị của tôi" sẽ dẫn bạn đến cài đặt hồ sơ cung cấp của họ, sau đó hiển thị UDID và thêm tùy chọn để gửi qua Email.


-3

Vui lòng sử dụng udid.io trong trình duyệt thiết bị của bạn Hoặc Vui lòng cài đặt iTools và điều khiển thiết bị để nhận UDID chính xác.

Adarsh ​​EM


2
"Chúng tôi hy vọng bạn là người thử nghiệm hoặc nhà phát triển ứng dụng dành cho thiết bị di động hoặc loại họ." Erm, không có gì xúc phạm, nhưng trang web đó trông có vẻ mờ ám và hồ sơ cấp phép chưa được ký không thực sự thoải mái. Để nói gì về làm thế nào tôi không chắc chắn làm thế nào họ đang nhận được UDID
Tom Kidd

Không còn bất kỳ cơ chế nào được chấp thuận cho một trang web hoặc công cụ để lấy UDID thực từ một thiết bị, nếu nó chưa được bẻ khóa. Tôi sẽ tránh bất kỳ giải pháp nào nói cách khác
phần mềm đã phát triển vào

@Schnapple Trang web tận dụng các cấu hình thường được MDM sử dụng (nhưng cũng được sử dụng bởi các dịch vụ như TestFlight) để truy xuất UDID. Tôi đồng ý về phần không dấu, nhưng ngoài việc nó không gây ra vấn đề gì. Bạn vẫn có thể lấy UDID từ thiết bị iOS, không phải từ bên trong ứng dụng; UDID vẫn được sử dụng rộng rãi trong MDM.
Calrion

1
Đã thực hiện một số nghiên cứu về hệ thống Quản lý thiết bị di động (MDM). Tài liệu API chỉ được phát hành cho Nhà phát triển doanh nghiệp, nhưng nó được báo cáo là hỗ trợ các cơ chế để truy xuất UDID, vì vậy tuyên bố trước đó của tôi ("Không còn bất kỳ cơ chế được chấp thuận nào cho một trang web hoặc công cụ để truy xuất UDID thực từ một thiết bị") là sai.
phần mềm phát triển

iTools? Mac OS 9 đã trở lại? :-)
Nicolas Barbulesco

-4

Chúng ta có thể sử dụng identifierForVendor cho 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;
}

--Lưu ý quan trọng ---

UDID và IDfierForVendor khác nhau: ---

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
Tôi không tìm kiếm thứ gì đó để nhận dạng thiết bị trong ứng dụng, tôi đang tìm cách lấy UDID mà không cần phải sử dụng bất cứ thứ gì ngoài chính thiết bị cho mục đích thêm nó vào hồ sơ cấp phép adhoc. Ngày càng có nhiều người không bao giờ đồng bộ trực tiếp thiết bị iOS của họ với máy tính - thiết bị có thể tự cập nhật, đồng bộ cài đặt qua iCloud, v.v. và đôi khi đồng bộ hóa với iTunes sẽ làm mọi thứ rối tung lên. Câu trả lời dường như là "không"
Tom Kidd

Tôi có nhập tất cả những thứ đó vào iPhone của mình không? ^^ Ở đâu? Nó có cung cấp cho tôi UDID của tôi không? Tôi nghĩ câu trả lời này không trả lời cho câu hỏi: Làm cách nào để lấy UDID của iPhone?
Nicolas Barbulesco
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.