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.
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.
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.
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 Swift, chúng tôi sẽ sử dụng tất cả các thuật ngữ đã đề 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 ta mã kiểu máy nhưng không 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.
Đây là một ví dụ về giao diện của nó khi chúng tôi chạy mã trên trình mô phỏng chạy iPhone chạy iPhone 7 Plus trên phiên bản iOS 12.0
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 |
iPhone5,1, iPhone5,2 | iPhone 5 |
iPhone5,3, iPhone5,4 | iPhone 5c |
iPhone6,1, iPhone6,2 | iPhone 5s |
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) |