Khi làm việc trên các ứng dụng iOS, đôi khi chúng ta cần biết thiết bị được cài đặt ứng dụng nào và cung cấp các tính năng tùy chỉnh tùy theo thiết bị đang sử dụng. Ví dụ:chúng tôi muốn cung cấp một số tính năng trên iPhone X nhưng không cung cấp trên iPhone 7. Trong bài viết này, chúng tôi sẽ tìm hiểu cách tìm thiết bị iOS đang được sử dụng, bằng Ứng dụng iOS.
Hãy xem qua một số điều khoản cần thiết để đạt được kết quả mong muốn,
utsname - đây là cấu trúc nằm trong mô-đun Darwin của iOS
uname - uname là một hàm lấy utsname làm đầu vào và trả về Int32 làm đầu ra.
Tìm thiết bị đang được sử dụng trên iOS SDK là một nhiệm vụ đơn giản, nếu chúng tôi chỉ cần tìm kiểu máy hoặc tên, chúng tôi có thể sử dụng bất kỳ mã nào dưới đây và đổi lại nó sẽ cung cấp cho chúng tôi một chuỗi.
- UIDevice.current.localizedModel
- UIDevice.current.model
- UIDevice.current.name
Nhưng đoạn mã trên không phải là thiết bị chính xác đang được sử dụng, nó chỉ cho chúng ta biết rằng một chiếc iPhone đang được sử dụng. Để sử dụng chính xác thiết bị, chúng tôi sẽ phải thực hiện một số bước.
Trong mục tiêu C, chúng ta có thể làm điều đó như
NSString* deviceName() { struct utsname systemInfo; uname(&systemInfo); return [NSString stringWithCString:systemInfo.machine, encoding:NSUTF8StringEncoding]; }
Gương - Biểu diễn cấu trúc con và kiểu hiển thị của một phiên bản thuộc bất kỳ loại nào.
Trong Swift, chúng tôi sẽ sử dụng tất cả các điều khoản đã đề cập ở trên để lấy số thiết bị làm đầu ra.
func getDevice() -> String { var systemInfo = utsname() uname(&systemInfo) let machineMirror = Mirror(reflecting: systemInfo.machine) let identifier = machineMirror.children.reduce(“”) { identifier, element in guard let value = element.value as? Int8 , value != 0 else { identifier } identifier + String(UnicodeScalar(UInt8(value))) } return identifier }
Chức năng này cung cấp cho chúng tôi mã kiểu máy nhưng không cung cấp chính xác tên thiết bị.
Chúng tôi sẽ phải so sánh biến "số nhận dạng" này với nhiều giá trị để có được tên mô hình theo yêu cầu.
Sau đây là kết quả khi chạy mã này trên trình mô phỏng iPhone 7 plus.
Một số mã kiểu máy cho các thiết bị apple và tên tương ứng của chúng là -
iPod4,1 | iPod Touch 4G |
iPod5,1 | iPod Touch 5G |
iPod7,1 | iPod Touch 6G |
iPhone3,1, iPhone3,2, iPhone3,3 | iPhone 4 |
iPhone4 | iPhone 4s |
iPhone7,2 | iPhone 6 |
iPhone7,1 | iPhone 6 Plus |
iPhone8,1 | iPhone 6s |
iPhone8,2 | iPhone 6s Plus |
iPhone8,4 | iPhone SE |
iPhone9,1, iPhone9,3 | iPhone 7 |
iPhone9,2, iPhone 9,4 | iPhone 7 Plus |
iPad2,1, iPad2,2, iPad2,3, iPad2,4 | iPad 2 |
iPad3,1, iPad3,2, iPad3,3 | iPad 3 |
iPad3,4, iPad3,5, iPad3,6 | iPad 4 |
iPad4,1, iPad4,2, iPad4,3 | iPad Air |
iPad5,3, iPad5,4 | iPad Air 2 |
iPad2,5, iPad2,6, iPad2,7 | iPad Mini |
iPad4,4, iPad4,5, iPad4,6 | iPad Mini 2 |
iPad4,7, iPad4,8, iPad4,9 | iPad Mini 3 |
iPad5,1, iPad5,2 | iPad Mini 4 |
iPad6,3, iPad6,4 | iPad Pro (9,7 inch) |
iPad6,7, iPad6,8 | iPad Pro (12,9 inch) |