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) với iPhone SDK?

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.

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

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)