Đố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
Trả lời
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.
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. –
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.
Đây là n bình luận nhưng không phải là câu trả lời. – zaph
Có điểm. hãy để tôi cập nhật nó với một câu trả lời cụ thể. –
@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
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.
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
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
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
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ị.
- 1. Truy lục số nhận dạng thiết bị iOS
- 2. iOS 8, Cách sử dụng thiết bị để phát triển?
- 3. Thiết bị iOS 8 không được công nhận bởi Tiện ích cấu hình iPhone
- 4. Nhận UDID trong iOS 8 +
- 5. Khả năng hiển thị trên iOS 8 bị trì hoãn?
- 6. Phông chữ trên thiết bị iOS
- 7. NSDateFormatter "HH" quay lại am/pm trên thiết bị iOS 8
- 8. Lấy số sê-ri từ thiết bị
- 9. Trên thiết bị máy chủ websocket iOS
- 10. Bật mã hóa trên thiết bị iOS
- 11. Ghi đè trên thiết bị iOS 5 UIView drawRect không hoạt động trên thiết bị
- 12. Nhận kích thước màn hình trên iOS 8
- 13. Lỗi 8 UIImagePickerController trên iOS
- 14. Cách tạo số sêri trong truy vấn?
- 15. ptrace trên iOS 8
- 16. Số nhận dạng thiết bị chéo PHAsset (hoặc ALAsset)
- 17. Nhận email người dùng mặc định trong Thiết bị iOS
- 18. UIDocument openWithCompletionHandler không hoàn thành trên thiết bị iOS
- 19. Nén video iOS Swift iOS 8 tệp video bị hỏng
- 20. SIGSEGV Sự cố trên thiết bị thử nghiệm iOS
- 21. Làm cách nào để lấy số sêri điện thoại (IMEI)
- 22. Làm cách nào để kết nối thiết bị iOS với thiết bị không iOS (thiết bị Arduino) qua Bluetooth?
- 23. Nhật ký thiết bị cho bluetooth trên iOS
- 24. Cách phát video 360 trên thiết bị iOS
- 25. jQuery UI Draggable không hoạt động trên thiết bị ios
- 26. iOS - UIImage imageNamed: trả về null trên thiết bị
- 27. Cách nhận "id thiết bị được băm" để thử nghiệm admob trên ios
- 28. Truy cập thiết bị iOS qua USB trên máy mac
- 29. Cách nhận nhật ký bảng điều khiển từ thiết bị iOS 8 bằng cách sử dụng windows PC
- 30. RS232 cho thiết bị iOS
Ý của bạn là, Bạn muốn Id thiết bị/UDID. Đúng.? –
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
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