Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> iOS

วิธีกำหนดประเภทอุปกรณ์ (iPhone, iPod Touch) ด้วย iPhone SDK


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

มาดูคำบางคำที่จะต้องใช้เพื่อให้ได้ผลลัพธ์ที่ต้องการ

utsname - โครงสร้างนี้อยู่ใน Darwin module ของ iOS

uname - uname เป็นฟังก์ชันที่รับ utsname เป็น input และคืนค่า Int32 เป็น output

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

  • UIDevice.current.localizedModel
  • UIDevice.current.model
  • UIDevice.current.name

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

ใน Objective-C เราสามารถทำได้แบบนี้

NSString* deviceName() {    struct utsname systemInfo;    uname(&systemInfo);    return [NSString stringWithCString:systemInfo.machine, encoding:NSUTF8StringEncoding]; }

Mirror - การแทนของโครงสร้างย่อยและรูปแบบการแสดงของอินสแตนซ์ของประเภทใดๆ

ใน Swift เราจะใช้ term ทั้งหมดที่กล่าวมาเพื่อได้ device number เป็น output

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 }

ฟังก์ชันนี้ให้ model code แต่ไม่ได้ให้ device name อย่างแน่นอน

เราต้องเปรียบเทียบตัวแปร "identifier" นี้กับหลายค่าเพื่อได้ model name ตามความต้องการ

ผลลัพธ์เมื่อรันโค้ดนี้บน iPhone 7 plus simulator

วิธีกำหนดประเภทอุปกรณ์ (iPhone, iPod Touch) ด้วย iPhone SDK

model codes สำหรับอุปกรณ์ Apple บางตัวและชื่อของพวกเขาคือ -

iPod4,1iPod Touch 4G
iPod5,1iPod Touch 5G
iPod7,1iPod Touch 6G
iPhone3,1 , iPhone3,2 , iPhone3,3iPhone 4
iPhone4iPhone 4s
iPhone7,2iPhone 6
iPhone7,1iPhone 6 Plus
iPhone8,1iPhone 6s
iPhone8,2iPhone 6s Plus
iPhone8,4iPhone SE
iPhone9,1 , iPhone9,3iPhone 7
iPhone9,2 , iPhone 9,4iPhone 7 Plus
iPad2,1 , iPad2,2 , iPad2,3 , iPad2,4iPad 2
iPad3,1 , iPad3,2 , iPad3,3iPad 3
iPad3,4 , iPad3,5 , iPad3,6iPad 4
iPad4,1 , iPad4,2 , iPad4,3iPad Air
iPad5,3 , iPad5,4iPad Air 2
iPad2,5 , iPad2,6 , iPad2,7iPad Mini
iPad4,4 , iPad4,5 , iPad4,6iPad Mini 2
iPad4,7 , iPad4,8 , iPad4,9iPad Mini 3
iPad5,1 , iPad5,2iPad Mini 4
iPad6,3 , iPad6,4iPad Pro (9.7 inch)
iPad6,7 , iPad6,8iPad Pro (12.9 inch)
No