আইওএস (iOS) অ্যাপ্লিকেশন ডেভেলপমেন্টের সময়ে আমরা কখনও কখনও জানতে চাই অ্যাপটি কোন ডিভাইসে ইনস্টল করা হয়েছে, এবং সেই অনুযায়ী কাস্টম ফিচার প্রদান করতে চাই। উদাহরণস্বরূপ, আমরা আইফোন এক্স (iPhone X)-এ কিছু ফিচার দিতে চাই কিন্তু আইফোন ৭-এ নয়। এই আর্টিকেলে আমরা শিখব কিভাবে একটি আইওএস অ্যাপ্লিকেশন ব্যবহার করে ব্যবহার করা হচ্ছে এমন আইওএস ডিভাইসটি খুঁজে বের করা যায়।
প্রয়োজনীয় টার্মসমূহ
আগে কিছু টার্ম বুঝে নেই যেগুলো ফলাফল পেতে প্রয়োজন:
- utsname — এটি আইওএস-র دارউইন (Darwin) মডিউলে অবস্থিত একটি স্ট্রাকচার।
- uname — এটি একটি ফাংশন যা utsname ইনপুট হিসেবে নেয় এবং আউটপুট হিসেবে Int32 রিটার্ন করে।
- Mirror — যেকোনো টাইপের ইনস্ট্যান্সের সাব-স্ট্রাকচার এবং ডিসপ্লে স্টাইলের একটি রিপ্রেজেন্টেশন।
আইওএস SDK-তে ডিভাইস খুঁজে বের করা একটি সহজ কাজ যদি শুধু মডেল বা নাম জানতে হয়। নিচের কোডগুলো ব্যবহার করলে একটি স্ট্রিং রিটার্ন করবে।
কিন্তু উপরের কোড সঠিক ডিভাইস বলতে পারে না, এটি শুধু বলে যে একটি আইফোন ব্যবহার হচ্ছে। সঠিক ডিভাইস জানতে হলে কিছু ধাপ অনুসরণ করতে হবে।
সুইফট (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
}
এই ফাংশন আমাদের মডেল কোড (model code) দেয় কিন্তু সঠিক ডিভাইসের নাম দেয় না। এই "identifier" ভেরিয়েবলকে একাধিক ভ্যালুর সাথে তুলনা করে প্রয়োজন অনুযায়ী মডেলের নাম পেতে হয়।
সিমুলেটরে রান করার উদাহরণ
নিচে একটি উদাহরণ দেওয়া হলো যেখানে কোডটি আইওএস ১২.০ ভার্সনে চলমান আইফোন ৭ প্লাস (iPhone 7 Plus) সিমুলেটরে রান করা হয়েছে।

অ্যাপল ডিভাইসের মডেল কোড এবং সংশ্লিষ্ট নামের তালিকা
| 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 |
| 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 , 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) |