Swift में iPhone मॉडल कैसे पहचानें: शुरुआती लोगों के लिए गाइड
\n\nक्या आपने कभी सोचा है कि आपका Swift ऐप iPhone 13 पर तो बिल्कुल सही चलता है, लेकिन iPhone SE (दूसरी पीढ़ी) पर उसका लेआउट बिगड़ा हुआ दिखता है? या फिर आपके द्वारा जोड़ी गई कुछ सुविधाएं पुराने मॉडलों पर काम क्यों नहीं करतीं? इसका जवाब सीधा है: अलग-अलग iPhone में अलग-अलग क्षमताएं होती हैं — स्क्रीन साइज से लेकर Face ID और हैप्टिक फीडबैक तक।
\n\nइस लेख में हम सीखेंगे कि Swift में iPhone मॉडल कैसे पहचानें — UIDevice के आसान तरीके से लेकर sysctlbyname के प्रोफेशनल तरीके तक। आप सिर्फ "iPhone" नहीं, बल्कि यह भी जान पाएंगे कि सामने iPhone 14 Pro Max है या iPhone 8। चलिए शुरू करते हैं!
\n\nयह क्यों ज़रूरी है?
\nहर iOS डेवलपर को कभी न कभी किसी खास डिवाइस के हिसाब से इंटरफ़ेस या लॉजिक को एडजस्ट करना पड़ता है। यहाँ कुछ असली उदाहरण हैं:
\n- \n
- एडेप्टिव डिज़ाइन: "नॉच" वाले iPhone (iPhone X और उससे नए) पर एलिमेंट्स को पुराने Home बटन वाले मॉडलों से अलग रखना होता है। \n
- परफॉर्मेंस ऑप्टिमाइज़ेशन: पुराने डिवाइसों (iPhone 6s, iPhone 7) पर भारी एनिमेशन या इफेक्ट्स बंद करने चाहिए। \n
- फीचर लिमिटेशन: सभी मॉडल ARKit, LiDAR, 120Hz डिस्प्ले या MagSafe को सपोर्ट नहीं करते। \n
- एनालिटिक्स: यह जानना कि आपके यूज़र कौन से मॉडल इस्तेमाल कर रहे हैं, प्रोडक्ट डिसीजन लेने में मदद करता है। \n
लेवल 1: UIDevice (आसान, लेकिन सीमित)
\nसबसे आसान तरीका है बिल्ट-इन क्लास UIDevice का उपयोग करना। यह डिवाइस की सामान्य जानकारी देता है, लेकिन सटीक मॉडल नहीं बताता।
import UIKit\n\nlet device = UIDevice.current\nprint("डिवाइस का नाम: \\(device.name)")\nprint("मॉडल: \\(device.model)") // "iPhone" या "iPad"\nprint("सिस्टम: \\(device.systemName)") // "iOS"\nprint("वर्जन: \\(device.systemVersion)") // "17.0"\n\n\nआपको क्या मिलेगा: device.model सिर्फ "iPhone" या "iPad" लौटाएगा। यह जानने के लिए उपयोगी है कि यह मोबाइल डिवाइस है या नहीं, लेकिन सटीक पहचान के लिए नहीं।
कब उपयोग करें: जब आपको सिर्फ यह चेक करना हो कि ऐप iPhone पर चल रहा है, iPad या iPod touch पर नहीं। जैसे, iPad-स्पेसिफिक फीचर्स को छिपाने के लिए।
\n\nलेवल 2: sysctlbyname (प्रोफेशनल तरीका)
\niPhone का सटीक मॉडल पाने के लिए, आपको सिस्टम कॉल sysctlbyname का उपयोग करना होगा। यह "iPhone14,2" जैसी स्ट्रिंग लौटाता है (यह iPhone 13 Pro है)। इन आइडेंटिफायर्स को जानकर, आप उन्हें मानव-पठनीय नामों से मैप कर सकते हैं।
यहाँ Swift में काम करने वाला कोड है:
\n\nimport UIKit\n\nfunc getDeviceModelCode() -> String {\n var size = 0\n sysctlbyname("hw.machine", nil, &size, nil, 0)\n var machine = [CChar](repeating: 0, count: size)\n sysctlbyname("hw.machine", &machine, &size, nil, 0)\n return String(cString: machine)\n}\n\n// उपयोग\nlet modelCode = getDeviceModelCode()\nprint("मॉडल कोड: \\(modelCode)") // उदाहरण: "iPhone14,2"\n\n\nअब आपके पास "iPhone14,2" है। लेकिन यह कौन सा मॉडल है? इसके लिए आपको एक मैपिंग डिक्शनरी की ज़रूरत होगी।
iPhone मॉडलों की डिक्शनरी (2024 तक अपडेटेड)
\nनीचे एक आंशिक लेकिन अधिकतर कामों के लिए पर्याप्त लिस्ट दी गई है। पूरी लिस्ट ओपन सोर्स में मिल सकती है या आप इसे एक अलग फाइल में रख सकते हैं।
\n\nfunc getDeviceModelName() -> String {\n let modelCode = getDeviceModelCode()\n \n let modelMap: [String: String] = [\n // iPhone 15 सीरीज\n "iPhone15,4": "iPhone 15",\n "iPhone15,5": "iPhone 15 Plus",\n "iPhone16,1": "iPhone 15 Pro",\n "iPhone16,2": "iPhone 15 Pro Max",\n \n // iPhone 14 सीरीज\n "iPhone14,7": "iPhone 14",\n