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 एक 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 और 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 संस्करण।
| पैरामीटर | iOS | Android |
|---|---|---|
| न्यूनतम संस्करण | Deployment Target (IPHONEOS_DEPLOYMENT_TARGET) | minSdkVersion |
| कहाँ निर्दिष्ट किया जाता है | Xcode Build Settings → Info.plist | build.gradle → AndroidManifest.xml |
| कोड में जाँच | @available / #available / if #available | Build.VERSION.SDK_INT |
| लक्ष्य संस्करण | Base SDK (हमेशा नवीनतम) | compileSdkVersion + targetSdkVersion |
| स्टोर फ़िल्टरिंग | App Store: MinimumOSVersion | Google Play: minSdkVersion |
मुख्य अंतर यह है कि iOS में Base SDK हमेशा Xcode में स्थापित नवीनतम संस्करण होता है। डेवलपर Android की तरह compileSdkVersion नहीं चुन सकता — ऐप्लिकेशन हमेशा उपलब्ध नवीनतम SDK के विरुद्ध संकलित होता है। iOS में नए व्यवहार परिवर्तन सभी ऐप्लिकेशनों पर लागू होते हैं जो नए Base SDK के साथ संकलित किए गए हैं, चाहे Deployment Target कुछ भी हो। Android में, targetSdkVersion व्यवहार परिवर्तनों पर नियंत्रण प्रदान करता है; iOS में ऐसा कोई अलगाव नहीं है।
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 संस्करण नीचे चुनना चाहिए।
iOS Deployment Target कॉन्फ़िगर करना प्रोजेक्ट में कई स्थानों पर किया जाता है: मुख्य Target, Pods प्रोजेक्ट (यदि CocoaPods का उपयोग किया गया है), Swift Package Manager निर्भरताएँ और Widget/Extension टार्गेट। यदि मुख्य ऐप्लिकेशन और एक्सटेंशन के बीच मान भिन्न हैं, तो App Store सभी में से अधिकतम का उपयोग करता है — अर्थात एक एक्सटेंशन का Target मुख्य ऐप्लिकेशन से कम नहीं हो सकता।
Xcode प्रोजेक्ट खोलें → Target चुनें → General टैब → Minimum iOS Deployment अनुभाग। ड्रॉपडाउन Xcode में स्थापित सभी उपलब्ध iOS SDK संस्करण दिखाता है। परिवर्तन सभी बिल्ड स्कीम पर लागू होता है। वैकल्पिक रूप से — Build Settings टैब → iOS Deployment Target (IPHONEOS_DEPLOYMENT_TARGET)। यदि प्रोजेक्ट में कई Target एक्सटेंशन (Widget, Watch) हैं, तो प्रत्येक का अपना Deployment Target होता है।
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'.
// 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 संगतता की जाँच करता है।
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 बढ़ाना है।
# 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
endPodfile में post_install हुक सभी pod लाइब्रेरी के लिए जबरन Deployment Target 16.0 सेट करता है। यह तब उपयोगी होता है जब कोई pod अपनी कार्यक्षमता के लिए आवश्यकता से अधिक Target निर्दिष्ट करता है। इसका उपयोग केवल तभी करें यदि आप सुनिश्चित हैं कि pod उच्च iOS संस्करण के API का उपयोग नहीं करता है।
@available और #available Swift और Objective-C निर्देश हैं जो केवल कुछ OS संस्करणों पर उपलब्ध API को सुरक्षित रूप से कॉल करने के लिए हैं। यदि प्रोजेक्ट का Deployment Target iOS 16.0 है और एक विधि को iOS 17.0 की आवश्यकता है, तो सीधा कॉल iOS 16.0–16.x वाले डिवाइसों पर रनटाइम क्रैश का कारण बनेगा। उपलब्धता जाँच कई iOS संस्करणों का समर्थन करने के लिए एक अनिवार्य उपकरण है।
@available निर्देश कक्षाओं, विधियों या संपूर्ण फ़ाइलों पर लागू होता है। यदि किसी क्लास से पहले @available(iOS 17.0, *) निर्दिष्ट किया गया है, तो पूरी क्लास केवल iOS 17.0+ पर उपलब्ध है। iOS 16.0 पर क्लास को कॉल करने का प्रयास रनटाइम त्रुटि का कारण बनेगा। किसी विशिष्ट OS संस्करण के लिए विशिष्ट कार्यक्षमता के पूरे मॉड्यूल को अलग करने के लिए @available का उपयोग करें। क्लास के अंदर विधियों के लिए, @available व्यक्तिगत फ़ंक्शन को छिपाने की अनुमति देता है।
#available निर्देश (if #available) रनटाइम पर OS संस्करण की जाँच करता है और केवल उसके मेल खाने पर कोड निष्पादित करता है। नए और पुराने कार्यान्वयन के बीच चयन करने के लिए फ़ंक्शन के अंदर उपयोग किया जाता है। Objective-C में, समतुल्य if के अंदर @available(iOS 17.0, *) है। अधिक जटिल जाँच के लिए, संस्करण घटकों (major, minor, patch) की तुलना करने के लिए ProcessInfo.processInfo.isOperatingSystemAtLeast का उपयोग करें।
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 Swift #available के समान शब्दार्थ के साथ @available(iOS 17.0, *) का उपयोग करता है। अंतर: Objective-C रनटाइम पर जाँच करता है, Swift #aware भी रनटाइम है लेकिन शाखा अनुकूलन के लिए कंपाइलर संकेतों के साथ। Swift के साथ इंटरैक्ट करने वाले Objective-C कोड के लिए, Objective-C पक्ष पर उपलब्धता जाँच आवश्यक है — Swift ब्रिजिंग स्वचालित जाँच नहीं जोड़ता।
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% | अधिकतम ऑडियंस |
| उद्यम / B2B | iOS 16.0 | ~83% | कॉर्पोरेट डिवाइस धीरे-धीरे अपडेट होते हैं |
| स्टार्टअप / MVP | iOS 17.0 | ~35% | नए API पर तेज़ विकास |
| गेम (Metal 3+) | iOS 17.0 | ~35% | नए ग्राफ़िक्स API की आवश्यकता |
| लाइब्रेरी/SDK | iOS 15.0 | ~90% | ग्राहकों के लिए अधिकतम संगतता |
लाइब्रेरी और SDK का Deployment Target जितना संभव हो उतना कम होना चाहिए (15.0 या 14.0 भी) — लाइब्रेरी उपभोक्ताओं का कोई भी Target आपसे अधिक हो सकता है। यदि किसी लाइब्रेरी को iOS 17.0 की आवश्यकता है, तो आधे प्रोजेक्ट इसका उपयोग नहीं कर पाएँगे। ऐप्लिकेशन के लिए, दूसरी ओर, नए API तक पहुँच के लिए आप उच्च 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), तो कार्यक्षमता उपयोगकर्ता सूचना के साथ पुराने संस्करणों के लिए अक्षम कर दी जाती है।
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 का समर्थन करने की अनुमति देता है — केवल संस्करणित मॉड्यूल।
Deployment Target कम करने के बाद, Xcode नए Target में अनुपलब्ध सभी API कॉल को पीले रंग में हाइलाइट करेगा। चेतावनी "In iOS 16.0 and later" का अर्थ है कि विधि को उच्च संस्करण की आवश्यकता है। समाधान: @available या if #available जोड़ें (अनुशंसित), क्रमिक माइग्रेशन के लिए @available(*, deprecated) के माध्यम से दबाएँ, या कॉल हटाएँ। प्रोजेक्ट में "Treat Warnings as Errors" सक्षम करने से ये चेतावनियाँ संकलन त्रुटियों में बदल जाएँगी — नियंत्रण के लिए इस विकल्प को सक्षम करें।
अक्सर पूछे जाने वाले प्रश्न
iOS Deployment Target न्यूनतम iOS संस्करण है जिस पर कोई ऐप्लिकेशन चल सकता है। इसे Xcode Project → Info → iOS Deployment Target में निर्दिष्ट किया जाता है। Target 16.0 वाला ऐप iOS 15.0 और उससे नीचे इंस्टॉल नहीं किया जा सकता। App Store इस पैरामीटर के अनुसार ऐप्लिकेशन को फ़िल्टर करता है — असमर्थित संस्करणों वाले उपयोगकर्ता ऐप नहीं देखते हैं। Android में समतुल्य 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।
बड़े पैमाने के ऐप्लिकेशन के लिए 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 में, सशर्त कोड निष्पादन के लिए फ़ंक्शन के अंदर #available(iOS 17.0, *) का उपयोग करें या घोषणात्मक जाँच के लिए क्लास/विधि स्तर पर @available(iOS 17.0, *) का उपयोग करें। सटीक संस्करण के लिए — ProcessInfo.processInfo.operatingSystemVersion, जो OperatingSystemVersion लौटाता है। Objective-C में, if के अंदर @available(iOS 17.0, *) का उपयोग करें। जाँच के बिना, Deployment Target से ऊपर के API को कॉल करने पर रनटाइम क्रैश होता है।
आप iOS Deployment Target घटा सकते हैं, लेकिन इसके लिए उच्च संस्करणों के सभी सीधे API कॉल को #available जाँच और फ़ॉलबैक कार्यान्वयन से बदलना आवश्यक है। Xcode पीली चेतावनियों से आगाह करेगा लेकिन त्रुटि नहीं दिखाएगा। बिना उचित फ़ॉलबैक वाले API (Live Activities, SwiftData) पुराने संस्करणों पर अक्षम कर दिए जाते हैं। जटिल माइग्रेशन से बचने के लिए वर्तमान से 2 संस्करण नीचे Target से शुरू करने की अनुशंसा की जाती है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें