เมื่อทำงานกับแอปพลิเคชัน iOS บางครั้งเราจำเป็นต้องทราบอุปกรณ์ที่ติดตั้งแอปพลิเคชัน และให้คุณสมบัติที่กำหนดเองโดยขึ้นอยู่กับอุปกรณ์ที่ใช้งาน ตัวอย่างเช่น เราต้องการมอบคุณสมบัติบางอย่างบน iPhone X แต่ไม่ใช่ใน iPhone 7 ในบทความนี้ เราจะเรียนรู้วิธีค้นหาอุปกรณ์ iOS ที่กำลังใช้งานโดยใช้แอปพลิเคชัน iOS
มาดูคำศัพท์ที่จำเป็นสำหรับการบรรลุผลตามที่ต้องการกัน
ชื่อเต็ม - นี่คือโครงสร้างที่อยู่ในโมดูลดาร์วินของ iOS
unname − uname เป็นฟังก์ชันที่ใช้ utsname เป็นอินพุตและส่งกลับ Int32 เป็นเอาต์พุต
การค้นหาอุปกรณ์ที่ใช้งานบน iOS SDK นั้นเป็นเรื่องง่าย หากเราเพียงแค่ต้องการค้นหารุ่นหรือชื่อ เราสามารถใช้รหัสใดๆ ด้านล่างนี้ได้ และมันจะให้สตริงตอบแทน
- UIDevice.current.localizedModel
- UIDevice.current.model
- UIDevice.current.name
แต่โค้ดด้านบนนี้ไม่ใช่อุปกรณ์ที่ใช้แน่นอน เพียงแต่บอกเราว่ากำลังใช้ iPhone อยู่ หากต้องการใช้อุปกรณ์ที่แน่นอน เราจะต้องทำตามขั้นตอนบางอย่าง
ในวัตถุประสงค์ C เราสามารถทำได้เหมือน
NSString* deviceName() { struct utsname systemInfo; uname(&systemInfo); return [NSString stringWithCString:systemInfo.machine, encoding:NSUTF8StringEncoding]; }
กระจก − การแสดงโครงสร้างย่อยและรูปแบบการแสดงผลของอินสแตนซ์ทุกประเภท
ใน 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 7 plus
รหัสรุ่นบางรุ่นสำหรับอุปกรณ์ 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 |
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 นิ้ว) |
iPad6,7 , iPad6,8 | iPad Pro (12.9 นิ้ว) |