Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

จะระบุประเภทอุปกรณ์ (iPhone, iPod Touch) ด้วย Swift ได้อย่างไร


เมื่อทำงานกับแอปพลิเคชัน iOS บางครั้งเราจำเป็นต้องทราบอุปกรณ์ที่ติดตั้งแอปพลิเคชัน และให้คุณสมบัติที่กำหนดเองโดยขึ้นอยู่กับอุปกรณ์ที่ใช้งาน ตัวอย่างเช่น เราต้องการมอบคุณสมบัติบางอย่างบน iPhone X แต่ไม่ใช่ใน iPhone 7 ในบทความนี้ เราจะเรียนรู้วิธีค้นหาอุปกรณ์ iOS ที่กำลังใช้งานโดยใช้แอปพลิเคชัน iOS

มาดูคำศัพท์ที่จำเป็นสำหรับการบรรลุผลตามที่ต้องการกัน

ชื่อเต็ม - นี่คือโครงสร้างที่อยู่ในโมดูลดาร์วินของ iOS

unname − uname เป็นฟังก์ชันที่ใช้ utsname เป็นอินพุตและส่งกลับ Int32 เป็นเอาต์พุต

กระจก − การแสดงโครงสร้างย่อยและรูปแบบการแสดงผลของอินสแตนซ์ทุกประเภท

การค้นหาอุปกรณ์ที่ใช้งานบน iOS SDK นั้นเป็นเรื่องง่าย หากเราเพียงแค่ต้องการค้นหารุ่นหรือชื่อ เราสามารถใช้รหัสใดๆ ด้านล่างนี้ได้ และมันจะให้สตริงตอบแทน

แต่โค้ดด้านบนนี้ไม่ใช่อุปกรณ์ที่ใช้แน่นอน เพียงแต่บอกเราว่ากำลังใช้ iPhone อยู่ หากต้องการใช้อุปกรณ์ที่แน่นอน เราจะต้องทำตามขั้นตอนบางอย่าง

ใน Swift เราจะใช้เงื่อนไขทั้งหมดที่กล่าวถึงข้างต้นเพื่อรับหมายเลขอุปกรณ์เป็นเอาต์พุต

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
}

ฟังก์ชันนี้ให้รหัสรุ่นแก่เราแต่ไม่ใช่ชื่ออุปกรณ์ทุกประการ เราจะต้องเปรียบเทียบตัวแปร "ตัวระบุ" นี้กับหลายค่าเพื่อให้ได้ชื่อรุ่นตามความต้องการ

นี่คือตัวอย่างลักษณะเมื่อเราเรียกใช้โค้ดบนเครื่องจำลองที่ใช้ iPhone ที่ใช้ iPhone 7 Plus ในเวอร์ชัน iOS 12.0

จะระบุประเภทอุปกรณ์ (iPhone, iPod Touch) ด้วย Swift ได้อย่างไร

รหัสรุ่นบางรุ่นสำหรับอุปกรณ์ Apple และชื่อตามลำดับคือ -

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 ไอแพดมินิ
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 นิ้ว)
iPad6,7 , iPad6,8 iPad Pro (12.9 นิ้ว)