2014-09-19 19 views
7

Đối với ứng dụng trong nhà, chúng tôi đã sử dụng mã sau đây UIDevice+serialNumber để nhận số sêri thiết bị. Tuy nhiên, có vẻ như với iOS 8, khóa đăng ký "IOPlatformSerialNumber" trống. Số sê-ri có thể nhận được bất kỳ cách nào khác không?Nhận số sê-ri thiết bị trên iOS 8

+0

Ý của bạn là, Bạn muốn Id thiết bị/UDID. Đúng.? –

+0

bạn có thể tạo một id ngẫu nhiên duy nhất để xác định thiết bị, nó sẽ không thay đổi trừ khi và cho đến khi bạn đặt lại thiết bị. Nếu bạn muốn thực hiện điều này tôi có thể cung cấp mã. – souvickcse

+4

Tôi muốn có số sê-ri thực tế. Đây không phải là ứng dụng cửa hàng ứng dụng, ứng dụng này dành cho ứng dụng trong nhà. Chúng tôi cần mã nối tiếp chứ không phải UUID, vì đây là liên kết ngược với mã nối tiếp được sử dụng để quản lý ứng dụng thông qua quản lý thiết bị di động. – quentinadam

Trả lời

-10

Số sêri cho thiết bị Apple có thể được tìm thấy trong Cài đặt -> Chung -> Giới thiệu -> Số sê-ri.

+1

Câu hỏi đặt ra là làm thế nào để có được điều này theo chương trình, không phải thông qua cài đặt. –

0

Trả lời: Không

Có hiện đang nổi giải pháp xung quanh lạm dụng .mobileconfig, nhưng họ thêm các vấn đề khác do bản chất của họ.

UUID đã bị xóa vì một lý do. Xem tin tức xung quanh quyền riêng tư và triệu tập Apple của Thượng viện Hoa Kỳ từ năm 2011 để hiểu được lý do tại sao điều này phải được thay đổi. http://arstechnica.com/apple/2011/04/apple-google-asked-to-join-judiciary-hearing-on-mobile-device-privacy/

Lợi dụng cổng di chuyển cơ bản để nhận số sê-ri của thiết bị thay thế UUID không phải là giải pháp. Bây giờ cùng một lúc để lạm dụng cấu hình điện thoại di động và đoán nó sẽ hoạt động được bao lâu.

Bạn có nhiều cách phù hợp để xử lý mọi tình huống mà trước đó bạn đã sử dụng nhận dạng thiết bị. Đặc biệt trong môi trường doanh nghiệp nơi bạn có mật mã và MDM hoàn toàn không có điểm để theo dõi một thiết bị như thế này.

+0

Đây là n bình luận nhưng không phải là câu trả lời. – zaph

+0

Có điểm. hãy để tôi cập nhật nó với một câu trả lời cụ thể. –

+0

@HelgeBecker Tôi đã tự hỏi, nếu ứng dụng của tôi sử dụng giải pháp .mobileconfig thì nó có được chấp nhận trên cửa hàng ứng dụng không? Bạn đã thử xuất bản một ứng dụng bằng .mobileconfig để nhận UDID chưa? – Moucheg

0

Như người trợ giúp đã nêu ở trên, UDID không còn khả dụng trong iOS 6+ vì lý do bảo mật/riêng tư. Thay vào đó, sử dụng identifierForVendor hoặc advertisingIdentifier Vui lòng kiểm tra UDID Replacement APIs

Đối với iOS 8+

+ (NSString *)deviceUUID 
{ 
if([[NSUserDefaults standardUserDefaults] objectForKey:[[NSBundle mainBundle] bundleIdentifier]]) 
    return [[NSUserDefaults standardUserDefaults] objectForKey:[[NSBundle mainBundle] bundleIdentifier]]; 

@autoreleasepool { 

    CFUUIDRef uuidReference = CFUUIDCreate(nil); 
    CFStringRef stringReference = CFUUIDCreateString(nil, uuidReference); 
    NSString *uuidString = (__bridge NSString *)(stringReference); 
    [[NSUserDefaults standardUserDefaults] setObject:uuidString forKey:[[NSBundle mainBundle] bundleIdentifier]]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    CFRelease(uuidReference); 
    CFRelease(stringReference); 
    return uuidString; 
} 
} 

Bạn có thể sử dụng identifierForVendor sau đó lưu trữ chúng vào móc chìa khóa và sử dụng sau này. Bởi vì giá trị của keychain sẽ không thay đổi khi cài đặt lại ứng dụng.

Tôi đã từng sử dụng Open UDID cho mục đích này. Không biết nếu nó vẫn hoạt động.

+0

Tôi biết về UUID, cảm ơn. Tuy nhiên, câu hỏi của tôi là cụ thể về cách lấy số sê-ri (không phải UDID và UUID). Tôi sẽ là tốt cho một giải pháp bằng cách sử dụng các API tư nhân như ứng dụng này được phân phối thông qua giấy phép doanh nghiệp. – quentinadam

+0

Kể từ iOS 8, thuộc tính IOPlatformSerialNumber đã bị xóa và cuộc gọi để truy xuất giá trị của nó hiện trả về 0. Xin lỗi nếu tôi hiểu lầm. – iAhmed

+0

Cách dễ nhất để có được một uuid trong ObjC là: '[[NSUUID UUID] UUIDString]'. Ngoài ra không có mục đích sử dụng '@ autoreleasepool' hoặc' synchronize'. Tính toán thành các biến '[NSUserDefaults standardUserDefaults]' và '[[NSBundle mainBundle] bundleIdentifier]' sẽ đơn giản hóa mã và giảm khả năng lỗi kiểu lỗi đánh máy. Để an toàn mã, cách thực hành tốt nhất là luôn luôn sử dụng dấu ngoặc nhọn "' {} '" với tất cả câu lệnh 'if'. – zaph

0

Truy xuất trực tiếp số sê-ri của thiết bị không còn trong iOS nữa.

Tuy nhiên, nếu nó chỉ đơn giản là cho một ứng dụng doanh nghiệp nội bộ, điều mà công ty tôi làm việc cho là sẽ thực hiện là:

Trong cấu hình thiết bị, sao chép số serial và thiết lập tên thiết bị như số sê-ri.

Sau đó, sử dụng Apple UIDevice API để truy xuất tên thiết bị.

Các vấn đề liên quan