iOS Deployment Target: यह क्या है, न्यूनतम iOS संस्करण और कॉन्फ़िगरेशन

लेखक: IT Sectr प्रकाशित: 2026-02-08 पढ़ने का समय: 14 मिनट

iOS Deployment Target (जिसे iOS Target, Deployment Target भी कहा जाता है) Apple ऑपरेटिंग सिस्टम का न्यूनतम संस्करण है जिस पर कोई ऐप्लिकेशन चलाया जा सकता है। यह पैरामीटर Xcode प्रोजेक्ट में सेट किया जाता है और संगतता सीमा को परिभाषित करता है: iOS 16.0 चुनने पर, ऐप्लिकेशन केवल iOS 16.0 और नए वर्जन वाले डिवाइसों पर इंस्टॉल होता है। Apple Developer Documentation के अनुसार, सही Deployment Target चुनना ऑडियंस पहुँच और नए Swift और Objective-C फ्रेमवर्क API तक पहुँच दोनों को प्रभावित करता है।

मुख्य बातें

  • iOS Deployment Target — ऐप्लिकेशन को इंस्टॉल और चलाने के लिए न्यूनतम iOS संस्करण, Android के minSdkVersion का पूर्ण समतुल्य
  • Xcode में कॉन्फ़िगरेशन: Project → Info → iOS Deployment Target, साथ ही Swift Package Manager और CocoaPods में
  • @available और #available — वर्तमान Deployment Target से ऊपर के API को सुरक्षित रूप से कॉल करने के लिए Swift तंत्र
  • प्रत्येक नया Deployment Target नए SwiftUI, UIKit, Foundation, AppKit API तक पहुँच देता है, लेकिन डिवाइस कवरेज कम करता है
  • App Store डिवाइस के iOS संस्करण के अनुसार ऐप्लिकेशन को फ़िल्टर करता है — यदि Deployment Target मेल नहीं खाता तो ऐप्लिकेशन प्रदर्शित नहीं होता

iOS Deployment Target क्या है?

iOS Deployment Target एक Xcode कॉन्फ़िगरेशन पैरामीटर है जो iOS, iPadOS, tvOS, watchOS या visionOS के सबसे पुराने संस्करण को निर्दिष्ट करता है जिस पर कोई ऐप्लिकेशन चल सकता है। प्रत्येक Xcode प्रोजेक्ट में प्रत्येक प्लेटफ़ॉर्म के लिए यह सेटिंग अलग-अलग होती है। उदाहरण के लिए, एक iOS ऐप का Deployment Target 16.0 हो सकता है, जबकि watchOS एक्सटेंशन का — 9.0। यदि उपयोगकर्ता का डिवाइस iOS 15.0 चलाता है, तो Target 16.0 वाला ऐप App Store में दिखाई नहीं देगा और सीधे वितरण के माध्यम से इंस्टॉल नहीं किया जा सकता।

Deployment Target तंत्र इंस्टॉलेशन के दौरान OS संस्करण जाँच पर आधारित है। iOS App Store Info.plist (कुंजी MinimumOSVersion) से Deployment Target मान की तुलना उपयोगकर्ता के डिवाइस पर OS संस्करण से करता है। यदि डिवाइस संस्करण कम है — तो "डाउनलोड" बटन अवरुद्ध हो जाता है, और App Store API उस डिवाइस के लिए खोज परिणामों में ऐप्लिकेशन नहीं लौटाता। यही व्यवहार TestFlight, ad-hoc और enterprise वितरण पर भी लागू होता है।

जून 2025 तक StatCounter के आँकड़ों के अनुसार, iOS 16 सक्रिय iPhone डिवाइसों का लगभग 48% हिस्सा है, iOS 17 — 35%, iOS 18 — 12%, पुराने संस्करण — लगभग 5%। Deployment Target 16.0 चुनने पर 83% डिवाइस कवर होते हैं, Target 17.0 — 35% (केवल iOS 17+)। ये आँकड़े निर्णय लेने के लिए महत्वपूर्ण हैं: Target जितना अधिक होगा, ऑडियंस उतनी ही छोटी होगी, लेकिन नवीनतम SwiftUI और UIKit API उतने ही अधिक सुलभ होंगे।

Deployment Targetडिवाइस हिस्सेदारी (जून 2025)उपलब्ध सुविधाएँ
iOS 15.0~90%Swift Concurrency, async/await, Focus State
iOS 16.0~83%SwiftUI NavigationStack, Layout, Live Activities
iOS 17.0~35%Observation, SwiftData, TipKit, Reactive Editing
iOS 18.0~12%नए Apple Intelligence API, बेहतर SwiftUI

iOS का प्रत्येक नया रिलीज़ न केवल उपयोगकर्ता सुविधाएँ बल्कि डेवलपर्स के लिए API भी जोड़ता है। नए SwiftUI मॉडिफ़ायर, UIKit विधियाँ, SwiftData और Observation जैसे फ्रेमवर्क केवल एक विशिष्ट Deployment Target पर उपलब्ध होते हैं। डेवलपर को ऑडियंस पहुँच और आधुनिक उपकरणों की उपलब्धता के बीच संतुलन बनाना होता है।

iOS Deployment Target बनाम minSdkVersion: Android से तुलना

iOS Deployment Target और Android का minSdkVersion एक ही कार्य करते हैं — ऐप्लिकेशन के लिए न्यूनतम OS संस्करण सेट करना। हालाँकि, कार्यान्वयन तंत्र और संबंधित उपकरण भिन्न हैं। इन अंतरों को समझना दोनों प्लेटफ़ॉर्म पर काम करने वाले डेवलपर्स के लिए उपयोगी है और पारिस्थितिक तंत्रों के बीच स्विच करते समय भ्रम से बचने में मदद करता है।

iOS में, न्यूनतम संस्करण Xcode बिल्ड सेटिंग्स (IPHONEOS_DEPLOYMENT_TARGET) के माध्यम से सेट किया जाता है और Info.plist (MinimumOSVersion) में संग्रहीत किया जाता है। Android में — build.gradle (minSdkVersion) और AndroidManifest.xml (<uses-sdk android:minSdkVersion>) के माध्यम से। iOS में targetSdkVersion और compileSdkVersion के समतुल्य नहीं हैं — iOS में व्यवहार परिवर्तन उस SDK द्वारा प्रबंधित किए जाते हैं जिसके साथ ऐप्लिकेशन संकलित किया गया है (Base SDK) और डिवाइस पर OS संस्करण।

पैरामीटरiOSAndroid
न्यूनतम संस्करणDeployment Target (IPHONEOS_DEPLOYMENT_TARGET)minSdkVersion
कहाँ निर्दिष्ट किया जाता हैXcode Build Settings → Info.plistbuild.gradle → AndroidManifest.xml
कोड में जाँच@available / #available / if #availableBuild.VERSION.SDK_INT
लक्ष्य संस्करणBase SDK (हमेशा नवीनतम)compileSdkVersion + targetSdkVersion
स्टोर फ़िल्टरिंगApp Store: MinimumOSVersionGoogle Play: minSdkVersion

मुख्य अंतर यह है कि iOS में Base SDK हमेशा Xcode में स्थापित नवीनतम संस्करण होता है। डेवलपर Android की तरह compileSdkVersion नहीं चुन सकता — ऐप्लिकेशन हमेशा उपलब्ध नवीनतम SDK के विरुद्ध संकलित होता है। iOS में नए व्यवहार परिवर्तन सभी ऐप्लिकेशनों पर लागू होते हैं जो नए Base SDK के साथ संकलित किए गए हैं, चाहे Deployment Target कुछ भी हो। Android में, targetSdkVersion व्यवहार परिवर्तनों पर नियंत्रण प्रदान करता है; iOS में ऐसा कोई अलगाव नहीं है।

iOS बनाम Android में व्यवहार परिवर्तन

Android के विपरीत, जहाँ व्यवहार परिवर्तन targetSdkVersion से बंधे होते हैं, iOS Xcode और Base SDK के नए संस्करण के साथ संकलित सभी ऐप्लिकेशनों पर व्यवहार परिवर्तन लागू करता है। उदाहरण के लिए, iOS 13 ने डार्क मोड पेश किया — Xcode 11 और iOS 13 SDK के साथ बनाए गए सभी ऐप्लिकेशनों को स्वचालित रूप से डार्क थीम समर्थन मिला, चाहे Deployment Target कुछ भी हो। Android में, एक समान परिवर्तन (Scoped Storage) केवल तब लागू होता है जब targetSdk >= 29 हो। iOS डेवलपर्स को स्थगन की संभावना के बिना, प्रत्येक नए Xcode के साथ व्यवहार परिवर्तनों के लिए तैयार रहना होगा।

दोनों प्लेटफ़ॉर्म का ज्ञान न्यूनतम संस्करण चुनने के परिणामों की भविष्यवाणी करने और नए API के लिए कोड अपडेट की योजना बनाने की अनुमति देता है। IT Sectr में, हम 2017 से दोनों पारिस्थितिक तंत्रों का उपयोग कर रहे हैं — अभ्यास से पता चलता है कि कवरेज और कार्यक्षमता के संतुलन के लिए iOS Deployment Target को वर्तमान से 2–3 संस्करण नीचे चुनना चाहिए।

Xcode में Deployment Target कैसे सेट करें

iOS Deployment Target कॉन्फ़िगर करना प्रोजेक्ट में कई स्थानों पर किया जाता है: मुख्य Target, Pods प्रोजेक्ट (यदि CocoaPods का उपयोग किया गया है), Swift Package Manager निर्भरताएँ और Widget/Extension टार्गेट। यदि मुख्य ऐप्लिकेशन और एक्सटेंशन के बीच मान भिन्न हैं, तो App Store सभी में से अधिकतम का उपयोग करता है — अर्थात एक एक्सटेंशन का Target मुख्य ऐप्लिकेशन से कम नहीं हो सकता।

Xcode प्रोजेक्ट एडिटर में कॉन्फ़िगरेशन

Xcode प्रोजेक्ट खोलें → Target चुनें → General टैब → Minimum iOS Deployment अनुभाग। ड्रॉपडाउन Xcode में स्थापित सभी उपलब्ध iOS SDK संस्करण दिखाता है। परिवर्तन सभी बिल्ड स्कीम पर लागू होता है। वैकल्पिक रूप से — Build Settings टैब → iOS Deployment Target (IPHONEOS_DEPLOYMENT_TARGET)। यदि प्रोजेक्ट में कई Target एक्सटेंशन (Widget, Watch) हैं, तो प्रत्येक का अपना Deployment Target होता है।

Swift Package Manager के माध्यम से कॉन्फ़िगरेशन

SPM के माध्यम से वितरित लाइब्रेरी के लिए, Deployment Target Package.swift में platforms पैरामीटर में निर्दिष्ट किया जाता है। platforms: [.iOS(.v16)] वाली लाइब्रेरी केवल Deployment Target iOS 16.0+ वाले ऐप्लिकेशनों के लिए उपलब्ध होगी। Target 15.0 वाले प्रोजेक्ट में ऐसी लाइब्रेरी जोड़ने पर, Xcode एक असंगतता त्रुटि दिखाएगा। CocoaPods में, Deployment Target Podfile में सेट किया जाता है: platform :ios, '16.0'.

swift
// Package.swift — SPM लाइब्रेरी के लिए Deployment Target
import PackageDescription

let package = Package(
    name: "MyLibrary",
    platforms: [
        .iOS(.v16),
        .macOS(.v13),
        .watchOS(.v9),
        .tvOS(.v16)
    ],
    products: [
        .library(
            name: "MyLibrary",
            targets: ["MyLibrary"]
        )
    ],
    dependencies: [],
    targets: [
        .target(
            name: "MyLibrary",
            swiftSettings: [
                .enableUpcomingFeature("ConciseMagicFile")
            ]
        )
    ]
)

// कोड में संगतता की जाँच
#if swift(>=5.9)
// Swift 5.9+ सुविधाएँ (Xcode 15+)
#endif

उदाहरण में, Package.swift प्लेटफ़ॉर्म iOS 16+, macOS 13+, watchOS 9+, tvOS 16+ सेट करता है। iOS 16.0 से नीचे Deployment Target वाला कोई भी प्रोजेक्ट इस लाइब्रेरी को नहीं जोड़ सकता। swiftSettings पैरामीटर में एक विशिष्ट Swift संस्करण के लिए आगामी सुविधाएँ शामिल हैं। SPM निर्भरता जोड़ते समय स्वचालित रूप से platforms संगतता की जाँच करता है।

CocoaPods और Podfile

Podfile निर्देश platform :ios, '16.0' का उपयोग करता है। pod install के बाद, CocoaPods प्रत्येक pod लाइब्रेरी के Deployment Target की जाँच करता है: यदि कम से कम एक का Target प्रोजेक्ट से अधिक है, तो स्थापना त्रुटि के साथ विफल हो जाएगी "The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 17.0, but the range of supported deployment target versions is 16.0 to 17.0"। समाधान समस्याग्रस्त pod का Target कम करना या प्रोजेक्ट का Target बढ़ाना है।

ruby
# Podfile — Deployment Target के साथ उदाहरण
platform :ios, '16.0'

# Deployment Target चेतावनियाँ अनदेखा करें
post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0'
        end
    end
end

Podfile में post_install हुक सभी pod लाइब्रेरी के लिए जबरन Deployment Target 16.0 सेट करता है। यह तब उपयोगी होता है जब कोई pod अपनी कार्यक्षमता के लिए आवश्यकता से अधिक Target निर्दिष्ट करता है। इसका उपयोग केवल तभी करें यदि आप सुनिश्चित हैं कि pod उच्च iOS संस्करण के API का उपयोग नहीं करता है।

Swift और Objective-C कोड में @available और #available जाँच

@available और #available Swift और Objective-C निर्देश हैं जो केवल कुछ OS संस्करणों पर उपलब्ध API को सुरक्षित रूप से कॉल करने के लिए हैं। यदि प्रोजेक्ट का Deployment Target iOS 16.0 है और एक विधि को iOS 17.0 की आवश्यकता है, तो सीधा कॉल iOS 16.0–16.x वाले डिवाइसों पर रनटाइम क्रैश का कारण बनेगा। उपलब्धता जाँच कई iOS संस्करणों का समर्थन करने के लिए एक अनिवार्य उपकरण है।

@available — घोषणात्मक जाँच

@available निर्देश कक्षाओं, विधियों या संपूर्ण फ़ाइलों पर लागू होता है। यदि किसी क्लास से पहले @available(iOS 17.0, *) निर्दिष्ट किया गया है, तो पूरी क्लास केवल iOS 17.0+ पर उपलब्ध है। iOS 16.0 पर क्लास को कॉल करने का प्रयास रनटाइम त्रुटि का कारण बनेगा। किसी विशिष्ट OS संस्करण के लिए विशिष्ट कार्यक्षमता के पूरे मॉड्यूल को अलग करने के लिए @available का उपयोग करें। क्लास के अंदर विधियों के लिए, @available व्यक्तिगत फ़ंक्शन को छिपाने की अनुमति देता है।

#available — सशर्त निष्पादन

#available निर्देश (if #available) रनटाइम पर OS संस्करण की जाँच करता है और केवल उसके मेल खाने पर कोड निष्पादित करता है। नए और पुराने कार्यान्वयन के बीच चयन करने के लिए फ़ंक्शन के अंदर उपयोग किया जाता है। Objective-C में, समतुल्य if के अंदर @available(iOS 17.0, *) है। अधिक जटिल जाँच के लिए, संस्करण घटकों (major, minor, patch) की तुलना करने के लिए ProcessInfo.processInfo.isOperatingSystemAtLeast का उपयोग करें।

swift
import UIKit
import SwiftUI

// 1. @available — संपूर्ण क्लास केवल iOS 17+ के लिए
@available(iOS 17.0, *)
class ObservationViewModel: ObservableObject {
    @Published var name: String = "User"

    // Observation framework का उपयोग करता है — केवल iOS 17+ पर उपलब्ध
    func updateWithObservation() {
        let newName = "Updated via Observation"
        name = newName
    }
}

// 2. #available — फ़ंक्शन के अंदर सशर्त कॉल
func configureLiveActivity() {
    if #available(iOS 16.1, *) {
        // Live Activities API — iOS 16.1 से उपलब्ध
        let activity = Activity<MyAttributes>(
            attributes: MyAttributes(name: "Live"),
            contentState: MyContentState(value: 42)
        )
        Task {
            await activity.activate()
        }
    } else {
        // फ़ॉलबैक: push सूचना या कुछ नहीं
        print("Live Activities उपलब्ध नहीं")
    }
}

// 3. ProcessInfo — सटीक संस्करण जाँच
func checkOSVersion() {
    let osVersion = ProcessInfo.processInfo.operatingSystemVersion
    print("iOS \(osVersion.majorVersion).\(osVersion.minorVersion).\(osVersion.patchVersion)")

    // घटक तुलना
    if osVersion.majorVersion >= 17 {
        print("iOS 17+ का पता चला")
    }
}

// 4. Objective-C @available
// Objective-C @available का उपयोग करता है:
// if (@available(iOS 17.0, *)) { }

// 5. @available unavailable तर्क के साथ
@available(*, unavailable, message: "Use configureWithSwiftUI instead")
func legacyConfigureMethod() { }

ObservationViewModel क्लास iOS 17 कार्यक्षमता को अलग करने के लिए @available का उपयोग करती है। configureLiveActivity फ़ंक्शन फ़ॉलबैक कार्यान्वयन के साथ Live Activities (iOS 16.1+) की जाँच करने के लिए #available का उपयोग करता है। ProcessInfo सटीक OS संस्करण की जाँच करता है। @available(*, unavailable) एक विधि को सभी संस्करणों पर अनुपलब्ध के रूप में चिह्नित करता है — नए API में माइग्रेशन के लिए। इन जाँचों के बिना, Deployment Target 16.0 वाला ऐप्लिकेशन iOS 17 API को कॉल करते समय iOS 16.0 वाले डिवाइसों पर क्रैश हो जाएगा।

Objective-C और @available

Objective-C Swift #available के समान शब्दार्थ के साथ @available(iOS 17.0, *) का उपयोग करता है। अंतर: Objective-C रनटाइम पर जाँच करता है, Swift #aware भी रनटाइम है लेकिन शाखा अनुकूलन के लिए कंपाइलर संकेतों के साथ। Swift के साथ इंटरैक्ट करने वाले Objective-C कोड के लिए, Objective-C पक्ष पर उपलब्धता जाँच आवश्यक है — Swift ब्रिजिंग स्वचालित जाँच नहीं जोड़ता।

अपने प्रोजेक्ट के लिए सही Deployment Target कैसे चुनें

iOS Deployment Target चुनना एक रणनीतिक निर्णय है जो तीन पहलुओं को प्रभावित करता है: ऑडियंस पहुँच, उपलब्ध API और कोड रखरखाव जटिलता। कोई एक सही मान नहीं है — चुनाव ऐप्लिकेशन की लक्षित ऑडियंस, न्यूनतम आवश्यक सुविधाओं और पिछड़ी संगतता समर्थन के लिए टीम संसाधनों पर निर्भर करता है।

पहला कारक — iOS संस्करण उपयोग आँकड़े। Apple WWDC और Apple Developer Dashboard में iOS स्थापना डेटा प्रकाशित करता है। जून 2025 तक, वितरण है: iOS 15 — ~7%, iOS 16 — ~48%, iOS 17 — ~35%, iOS 18 — ~10%। Target 16.0 चुनने पर 83% कवरेज मिलता है, Target 17.0 — 35%। बड़े पैमाने के ऐप्लिकेशन (सोशल नेटवर्क, मैसेजिंग, ई-कॉमर्स) के लिए Target 16.0 अनुशंसित है। विशिष्ट API आवश्यकताओं वाले B2B ऐप्लिकेशन के लिए — Target 17.0।

दूसरा कारक — आवश्यक API। यदि ऐप्लिकेशन की मुख्य सुविधा के लिए SwiftData (iOS 17+), Observation (iOS 17+) या Live Activities (iOS 16.1+) की आवश्यकता है, तो Target आवश्यक संस्करण से कम नहीं हो सकता। डिज़ाइन चरण में आवश्यक API का विश्लेषण उस स्थिति को रोकता है जहाँ विकास के बीच में पता चलता है कि उच्च Target की आवश्यकता है। उपलब्धता जाँच को बैकअप योजना के रूप में उपयोग करें, प्राथमिक रणनीति के रूप में नहीं।

तीसरा कारक — परीक्षण संसाधन। पुराने iOS संस्करणों का समर्थन करने के लिए उन संस्करणों वाले सिम्युलेटर और वास्तविक डिवाइसों पर परीक्षण की आवश्यकता होती है। iOS 15 का परीक्षण iPhone 6s/7 पर, iOS 16 — iPhone 8/X पर, iOS 17 — iPhone XS/XR पर किया जाता है। पिछड़ी संगतता का प्रत्येक अतिरिक्त संस्करण QA समय बढ़ाता है। यदि टीम छोटी है, तो वर्तमान से 2–3 संस्करण नीचे Target चुनना उचित है (16.0) — कवरेज और प्रयास के बीच संतुलन।

ऐप प्रकारअनुशंसित Targetकवरेजतर्क
बड़े पैमाने का (सामाजिक, बाज़ार)iOS 16.0~83%अधिकतम ऑडियंस
उद्यम / B2BiOS 16.0~83%कॉर्पोरेट डिवाइस धीरे-धीरे अपडेट होते हैं
स्टार्टअप / MVPiOS 17.0~35%नए API पर तेज़ विकास
गेम (Metal 3+)iOS 17.0~35%नए ग्राफ़िक्स API की आवश्यकता
लाइब्रेरी/SDKiOS 15.0~90%ग्राहकों के लिए अधिकतम संगतता

लाइब्रेरी और SDK का Deployment Target जितना संभव हो उतना कम होना चाहिए (15.0 या 14.0 भी) — लाइब्रेरी उपभोक्ताओं का कोई भी Target आपसे अधिक हो सकता है। यदि किसी लाइब्रेरी को iOS 17.0 की आवश्यकता है, तो आधे प्रोजेक्ट इसका उपयोग नहीं कर पाएँगे। ऐप्लिकेशन के लिए, दूसरी ओर, नए API तक पहुँच के लिए आप उच्च Target का खर्च उठा सकते हैं।

Deployment Target बढ़ाने के बाद उसे कैसे घटाएँ

iOS Deployment Target घटाना एक कार्य है जो ऑडियंस का विस्तार करने की आवश्यकता होने पर या पुराने प्रोजेक्टों के साथ संगतता वाली लाइब्रेरी प्रकाशित करते समय उत्पन्न होता है। बढ़ाने के विपरीत, घटाने के लिए कोड के साथ सक्रिय कार्य की आवश्यकता होती है: आपको नए (कम) Target में अनुपलब्ध सभी API के सीधे कॉल को #available जाँच और फ़ॉलबैक कार्यान्वयन से बदलना होगा।

पहला कदम — API सूची। Target घटाने पर Xcode संकलन त्रुटियाँ नहीं दिखाता — यह केवल पीली चेतावनियों से आगाह करता है। आपको @available(iOS N+, *) से चिह्नित सभी विधियों और कक्षाओं को खोजना होगा जहाँ N नए Target से अधिक है। पैटर्न "available(iOS" के साथ प्रोजेक्ट खोज (Cmd+Shift+F) का उपयोग करें। ऐसा प्रत्येक कॉल रीफ़ैक्टरिंग के लिए उम्मीदवार है।

दूसरा कदम — #available जाँच से बदलना। उच्च संस्करण से प्रत्येक API कॉल को if #available(iOS N+, *) { } else { } में लपेटा जाता है। संपूर्ण कक्षाओं के लिए, प्रकार स्तर पर @available के साथ #if os(iOS) का उपयोग करें। यदि किसी API के पास उचित फ़ॉलबैक नहीं है (उदाहरण के लिए, Live Activities), तो कार्यक्षमता उपयोगकर्ता सूचना के साथ पुराने संस्करणों के लिए अक्षम कर दी जाती है।

swift
import UIKit
import SwiftUI

// Deployment Target को 17.0 से 16.0 तक घटाना

// पहले (@available iOS 17.0):
@available(iOS 17.0, *)
func setupObservation() {
    // Observation framework — केवल iOS 17+
    let model = ObservationViewModel()
    // ...
}

// बाद (#available जाँच):
func setupObservationCompatible() {
    if #available(iOS 17.0, *) {
        // iOS 17+: Observation framework
        let model = ObservationViewModel()
        // ...
    } else {
        // iOS 16.x: @Published के साथ ObservableObject
        let model = LegacyObservableViewModel()
        // ...
    }
}

// UIKit iOS 17+ API के लिए:
@available(iOS 17.0, *)
class ModernViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // UIKit TraitChanges (iOS 17+) का उपयोग करता है
        registerForTraitChanges([UITraitVerticalSizeClass.self]) { _, _ in }
    }
}

// iOS 16 के लिए फ़ॉलबैक:
class LegacyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // कोई registerForTraitChanges नहीं — traitCollectionDidChange का उपयोग
    }

    override func traitCollectionDidChange(_: UITraitCollection?) {
        super.traitCollectionDidChange(nil)
        // iOS 16 के लिए traits परिवर्तनों को संभालना
    }
}

// iOS संस्करण के अनुसार कार्यान्वयन चुनने के लिए फ़ैक्टरी
func makeViewController() -> UIViewController {
    if #available(iOS 17.0, *) {
        return ModernViewController()
    } else {
        return LegacyViewController()
    }
}

कोड Target को iOS 17.0 से 16.0 तक कम करने का प्रदर्शन करता है। setupObservation फ़ंक्शन को #available जाँच के साथ setupObservationCompatible से बदल दिया गया है। ViewController को Modern (iOS 17+) और Legacy (iOS 16) में विभाजित किया गया है जिसमें OS संस्करण के अनुसार कार्यान्वयन चुनने वाला makeViewController फ़ैक्टरी है। यह आर्किटेक्चर पूरे कोडबेस की नकल किए बिना दो Deployment Target का समर्थन करने की अनुमति देता है — केवल संस्करणित मॉड्यूल।

Xcode चेतावनियाँ और उनका समाधान

Deployment Target कम करने के बाद, Xcode नए Target में अनुपलब्ध सभी API कॉल को पीले रंग में हाइलाइट करेगा। चेतावनी "In iOS 16.0 and later" का अर्थ है कि विधि को उच्च संस्करण की आवश्यकता है। समाधान: @available या if #available जोड़ें (अनुशंसित), क्रमिक माइग्रेशन के लिए @available(*, deprecated) के माध्यम से दबाएँ, या कॉल हटाएँ। प्रोजेक्ट में "Treat Warnings as Errors" सक्षम करने से ये चेतावनियाँ संकलन त्रुटियों में बदल जाएँगी — नियंत्रण के लिए इस विकल्प को सक्षम करें।

अक्सर पूछे जाने वाले प्रश्न

iOS Deployment Target क्या है?

iOS Deployment Target न्यूनतम iOS संस्करण है जिस पर कोई ऐप्लिकेशन चल सकता है। इसे Xcode Project → Info → iOS Deployment Target में निर्दिष्ट किया जाता है। Target 16.0 वाला ऐप iOS 15.0 और उससे नीचे इंस्टॉल नहीं किया जा सकता। App Store इस पैरामीटर के अनुसार ऐप्लिकेशन को फ़िल्टर करता है — असमर्थित संस्करणों वाले उपयोगकर्ता ऐप नहीं देखते हैं। Android में समतुल्य minSdkVersion है।

iOS Deployment Target minSdkVersion से कैसे अलग है?

दोनों पैरामीटर ऐप्लिकेशन इंस्टॉल करने के लिए न्यूनतम OS संस्करण सेट करते हैं। iOS Deployment Target Info.plist (MinimumOSVersion) में संग्रहीत किया जाता है, minSdkVersion — AndroidManifest.xml में। iOS में targetSdkVersion और compileSdkVersion के समतुल्य नहीं हैं — सभी व्यवहार परिवर्तन नए Base SDK के साथ संकलित होने पर लागू होते हैं। Android में, व्यवहार परिवर्तन targetSdkVersion के माध्यम से नियंत्रित किए जाते हैं। कोड जाँच: Swift में @available बनाम Android में Build.VERSION.SDK_INT।

2026 में कौन सा iOS Deployment Target चुनना चाहिए?

बड़े पैमाने के ऐप्लिकेशन के लिए iOS 16.0 (83% डिवाइस) और SwiftUI Observation/SwiftData का उपयोग करने वाले स्टार्टअप के लिए iOS 17.0 (35% डिवाइस) चुनने की अनुशंसा की जाती है। iOS 16.0 iPhone 8 और नए पर समर्थित है, इसमें SwiftUI Layout, NavigationStack, Live Activities शामिल हैं। iOS 17.0 Observation, SwiftData, TipKit प्रदान करता है। लाइब्रेरी और SDK के लिए — अधिकतम संगतता के लिए iOS 15.0।

Swift कोड में iOS संस्करण की जाँच कैसे करें?

Swift में, सशर्त कोड निष्पादन के लिए फ़ंक्शन के अंदर #available(iOS 17.0, *) का उपयोग करें या घोषणात्मक जाँच के लिए क्लास/विधि स्तर पर @available(iOS 17.0, *) का उपयोग करें। सटीक संस्करण के लिए — ProcessInfo.processInfo.operatingSystemVersion, जो OperatingSystemVersion लौटाता है। Objective-C में, if के अंदर @available(iOS 17.0, *) का उपयोग करें। जाँच के बिना, Deployment Target से ऊपर के API को कॉल करने पर रनटाइम क्रैश होता है।

क्या मैं प्रकाशन के बाद Deployment Target घटा सकता हूँ?

आप iOS Deployment Target घटा सकते हैं, लेकिन इसके लिए उच्च संस्करणों के सभी सीधे API कॉल को #available जाँच और फ़ॉलबैक कार्यान्वयन से बदलना आवश्यक है। Xcode पीली चेतावनियों से आगाह करेगा लेकिन त्रुटि नहीं दिखाएगा। बिना उचित फ़ॉलबैक वाले API (Live Activities, SwiftData) पुराने संस्करणों पर अक्षम कर दिए जाते हैं। जटिल माइग्रेशन से बचने के लिए वर्तमान से 2 संस्करण नीचे Target से शुरू करने की अनुशंसा की जाती है।

सारांश

  • iOS Deployment Target — ऐप्लिकेशन चलाने के लिए न्यूनतम OS संस्करण, Android में minSdkVersion के समतुल्य
  • Xcode Build Settings (IPHONEOS_DEPLOYMENT_TARGET) में कॉन्फ़िगर किया जाता है और Info.plist (MinimumOSVersion) में संग्रहीत किया जाता है
  • @available और #available — Deployment Target से ऊपर के API को सुरक्षित रूप से कॉल करने के लिए मुख्य Swift तंत्र
  • Target चुनाव डिवाइस कवरेज को प्रभावित करता है: iOS 16.0 — 83%, iOS 17.0 — 35%, iOS 15.0 — 90%
  • बड़े पैमाने के ऐप्लिकेशन के लिए iOS 16.0 अनुशंसित है, लाइब्रेरी के लिए — iOS 15.0, SwiftData का उपयोग करने वाले स्टार्टअप के लिए — iOS 17.0
  • Target घटाने के लिए फ़ॉलबैक के साथ #available जाँच में उच्च संस्करण के सभी API कॉल को रीफ़ैक्टर करने की आवश्यकता होती है
  • iOS में Base SDK हमेशा नवीनतम होता है — व्यवहार परिवर्तन सभी ऐप्लिकेशनों पर लागू होते हैं, Android targetSdkVersion के विपरीत

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें