iOS SDK দিয়ে ডিভাইস টাইপ নির্ণয়
iOS অ্যাপ্লিকেশন ডেভেলপমেন্টের সময় আমরা কখনো কখনো জানতে চাই অ্যাপ্লিকেশন কোন ডিভাইসে ইনস্টল করা হয়েছে, এবং ব্যবহৃত ডিভাইস অনুযায়ী কাস্টম ফিচার প্রদান করতে চাই। উদাহরণস্বরূপ, iPhone X-এ কিছু ফিচার দিতে চাই কিন্তু iPhone 7-এ নয়। এই আর্টিকেলে আমরা শিখব iOS অ্যাপ্লিকেশন দিয়ে iOS ডিভাইস কীভাবে খুঁজে বের করব।
প্রয়োজনীয় টার্মসমূহ
- utsname: iOS-এর Darwin মডিউলে অবস্থিত একটি স্ট্রাকচার।
- 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" ভেরিয়েবলটি একাধিক ভ্যালুর সাথে তুলনা করে মডেল নাম পাওয়া যায়।
iPhone 7 Plus সিমুলেটরে এই কোড রান করলে ফলাফল:

Apple ডিভাইসের মডেল কোড এবং নাম
| Model Code | Device Name |
|---|---|
| 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) |