iOS एप्लिकेशन पर काम करते समय, हमें कभी-कभी यह जानने की आवश्यकता होती है कि एप्लिकेशन किस डिवाइस पर इंस्टॉल है, और उपयोग में डिवाइस के आधार पर कस्टम सुविधाएं प्रदान करें। उदाहरण के लिए, हम iPhone X पर कुछ सुविधाएं प्रदान करना चाहते हैं लेकिन iPhone 7 पर नहीं। इस लेख में, हम सीखेंगे कि iOS एप्लिकेशन का उपयोग करके उपयोग में iOS डिवाइस को कैसे ढूंढें।
आइए कुछ शर्तों से गुजरें जो वांछित परिणाम प्राप्त करने के लिए आवश्यक होंगी:
- utsname - यह iOS के डार्विन मॉड्यूल में स्थित एक संरचना है
- uname - uname एक फ़ंक्शन है जो utsname को इनपुट के रूप में लेता है और आउटपुट के रूप में Int32 लौटाता है।
iOS SDK पर उपयोग में डिवाइस ढूंढना एक सरल कार्य है, यदि हमें केवल मॉडल या नाम ढूंढना है तो हम नीचे दिए गए किसी भी कोड का उपयोग कर सकते हैं, और यह बदले में एक स्ट्रिंग देगा।
- 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];
}
Swift में कार्यान्वयन
Mirror - किसी भी प्रकार के इंस्टेंस के सबस्ट्रक्चर और डिस्प्ले स्टाइल का प्रतिनिधित्व।
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 { return identifier }
return identifier + String(UnicodeScalar(UInt8(value)))
}
return identifier
}
यह फ़ंक्शन हमें मॉडल कोड देता है लेकिन सटीक डिवाइस नाम नहीं।
हमें अपनी आवश्यकता के अनुसार मॉडल नाम प्राप्त करने के लिए इस "identifier" वेरिएबल की तुलना कई मानों से करनी होगी।
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,1 | 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 / iPhone9,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) |