Computer >> Máy Tính >  >> Lập trình >> IOS

Làm thế nào để xác định loại thiết bị (iPhone, iPod Touch) bằng Swift?

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

Làm thế nào để xác định loại thiết bị (iPhone, iPod Touch) bằng Swift?

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)