iOS Deployment Target: mi ez, minimális iOS-verzió és konfiguráció

Szerző: IT Sectr Megjelenés: 2026-02-08 Olvasási idő: 14 perc

iOS Deployment Target (más néven iOS Target, Deployment Target) — az Apple operációs rendszerének az a minimális verziója, amelyen egy alkalmazás futtatható. A paraméter az Xcode projektben kerül beállításra, és meghatározza a kompatibilitás határát: az iOS 16.0 kiválasztásakor az alkalmazás csak iOS 16.0 vagy újabb rendszerű eszközökre telepíthető. Az Apple Developer Documentation szerint a Deployment Target helyes megválasztása egyaránt befolyásolja a közönség lefedettségét és az új Swift és Objective-C keretrendszerek API-jaihoz való hozzáférést.

Főbb pontok

  • iOS Deployment Target — az alkalmazás telepítéséhez és futtatásához szükséges minimális iOS-verzió, az Android minSdkVersion teljes megfelelője
  • Beállítás az Xcode-ban: Project → Info → iOS Deployment Target, valamint a Swift Package Manager-ben és a CocoaPods-ban
  • @available és #available — Swift mechanizmusok az aktuális Deployment Target feletti API-k biztonságos meghívásához
  • Minden új Deployment Target hozzáférést biztosít az új SwiftUI, UIKit, Foundation, AppKit API-khoz, de csökkenti az eszközlefedettséget
  • Az App Store szűri az alkalmazásokat az eszköz iOS-verziója alapján — eltérő Deployment Target esetén az alkalmazás nem jelenik meg

Mi az iOS Deployment Target?

iOS Deployment Target — az Xcode konfigurációs paramétere, amely megadja az iOS, iPadOS, tvOS, watchOS vagy visionOS azon legkorábbi verzióját, amelyen az alkalmazás futhat. Minden Xcode projekt külön-külön tartalmazza ezt a beállítást minden platformhoz. Például egy iOS-alkalmazás Deployment Target-je 16.0, egy watchOS-bővítményé pedig 9.0 lehet. Ha a felhasználó eszköze iOS 15.0-t futtat, a 16.0 Target-tel rendelkező alkalmazás nem jelenik meg az App Store-ban, és nem telepíthető közvetlen terjesztéssel.

A Deployment Target működési mechanizmusa az OS-verzió telepítés közbeni ellenőrzésén alapul. Az iOS App Store összehasonlítja a Deployment Target értékét az Info.plist-ből (MinimumOSVersion kulcs) a felhasználó eszközén lévő OS-verzióval. Ha az eszköz verziója alacsonyabb — a "Letöltés" gomb blokkolva van, és az App Store API nem adja vissza az alkalmazást a keresési találatok között ehhez az eszközhöz. Hasonló viselkedés vonatkozik a TestFlight, az ad-hoc és a vállalati terjesztésre is.

A StatCounter adatai szerint 2025 júniusában az iOS 16 az aktív iPhone-ok körülbelül 48%-át teszi ki, az iOS 17 — 35%-át, az iOS 18 — 12%-át, a régebbi verziók — körülbelül 5%-át. A Deployment Target 16.0 választása az eszközök 83%-át fedi le, a Target 17.0 — 35%-át (csak iOS 17+). Ezek a számok kritikusak a döntéshozatalban: minél magasabb a Target, annál kisebb a közönség, de annál elérhetőbbek a legújabb SwiftUI és UIKit API-k.

Deployment TargetEszközök aránya (2025. június)Elérhető funkciók
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%Új Apple Intelligence API-k, továbbfejlesztett SwiftUI

Minden új iOS-kiadás nemcsak felhasználói funkciókat, hanem fejlesztői API-kat is hozzáad. Az új SwiftUI-módosítók, UIKit-metódusok, olyan keretrendszerek, mint a SwiftData és az Observation, csak egy adott Deployment Target esetén érhetők el. A fejlesztőnek egyensúlyt kell teremtenie a közönség lefedettsége és a modern eszközök elérhetősége között.

iOS Deployment Target vs minSdkVersion: összehasonlítás az Androiddal

Az iOS Deployment Target és az Android minSdkVersion azonos funkciót lát el — beállítja az alkalmazás minimális OS-verzióját. Az implementációs mechanizmusok és a kapcsolódó eszközök azonban eltérnek. E különbségek megértése hasznos a mindkét platformon dolgozó fejlesztők számára, és segít elkerülni a zavart az ökoszisztémák közötti váltáskor.

Az iOS-ben a minimális verziót az Xcode build settings (IPHONEOS_DEPLOYMENT_TARGET) állítja be, és az Info.plist (MinimumOSVersion) tárolja. Androidban — a build.gradle (minSdkVersion) és az AndroidManifest.xml (<uses-sdk android:minSdkVersion>) útján. Az iOS-nek nincsenek megfelelői a targetSdkVersion-nek és a compileSdkVersion-nek — a viselkedésbeli változásokat az iOS-ben az SDK (Base SDK), amellyel az alkalmazást lefordították, és az eszközön lévő OS-verzió kezeli.

ParaméteriOSAndroid
Minimális verzióDeployment Target (IPHONEOS_DEPLOYMENT_TARGET)minSdkVersion
Hol van megadvaXcode Build Settings → Info.plistbuild.gradle → AndroidManifest.xml
Ellenőrzés kódban@available / #available / if #availableBuild.VERSION.SDK_INT
CélverzióBase SDK (mindig a legújabb)compileSdkVersion + targetSdkVersion
Szűrés az áruházbanApp Store: MinimumOSVersionGoogle Play: minSdkVersion

A fő különbség — a Base SDK az iOS-ben mindig az Xcode-ban telepített legújabb verzió. A fejlesztő nem választhat compileSdkVersion-t, mint Androidban — az alkalmazás mindig a legújabb elérhető SDK ellenében fordul. Az iOS-ben az új viselkedésbeli változások a Deployment Target-től függetlenül minden, új Base SDK-val lefordított alkalmazásra vonatkoznak. Androidban a targetSdkVersion irányítást ad a viselkedésbeli változások felett, az iOS-ben nincs ilyen szétválasztás.

Viselkedésbeli változások iOS-ben vs Androidban

Ellentétben az Androiddal, ahol a viselkedésbeli változások a targetSdkVersion-hez kötődnek, az iOS a viselkedésbeli változásokat minden, az új Xcode-verzióval és Base SDK-val lefordított alkalmazásra alkalmazza. Például az iOS 13 bevezette a Dark Mode-ot — minden, Xcode 11-gyel és iOS 13 SDK-val készült alkalmazás automatikusan megkapta a sötét téma támogatását, függetlenül a Deployment Target-től. Androidban egy hasonló változás (Scoped Storage) csak targetSdk >= 29 esetén alkalmazandó. Az iOS-fejlesztőnek fel kell készülnie a viselkedésbeli változásokra minden új Xcode-dal, késleltetési lehetőség nélkül.

Mindkét platform ismerete lehetővé teszi a minimális verzió kiválasztásának következményeinek előrejelzését és a kód új API-khoz való frissítésének tervezését. Az IT Sectr-ben 2017 óta használjuk mindkét ökoszisztémát — a gyakorlat azt mutatja, hogy az iOS Deployment Target-et 2–3 verzióval az aktuális alatt érdemes választani a lefedettség és a funkcionalitás egyensúlyához.

A Deployment Target beállítása az Xcode-ban

Az iOS Deployment Target konfigurációja a projekt több helyén történik: a fő Target, a Pods projekt (ha CocoaPods-t használ), a Swift Package Manager függőségek és a Widget/Extension targetek. Ha az értékek eltérnek a fő alkalmazás és a bővítmények között, az App Store a maximumot használja — vagyis a bővítmény nem rendelkezhet alacsonyabb Target-tel, mint a fő alkalmazás.

Konfiguráció az Xcode projekt szerkesztőjében

Nyissa meg az Xcode projektet → válassza ki a Target-et → General fül → Minimum iOS Deployment szakasz. A legördülő lista az Xcode-ban telepített összes elérhető iOS SDK-verziót mutatja. A változás minden build sémára vonatkozik. Alternatíva — Build Settings fül → iOS Deployment Target (IPHONEOS_DEPLOYMENT_TARGET). Ha a projekt több Target-bővítményt (Widget, Watch) tartalmaz, mindegyiknek saját Deployment Target-je van.

Konfiguráció a Swift Package Manageren keresztül

Az SPM-en keresztül terjesztett könyvtárak esetében a Deployment Target a Package.swift-ben a platforms paraméterben van megadva. A platforms: [.iOS(.v16)] könyvtár csak az iOS 16.0+ Deployment Target-tel rendelkező alkalmazások számára lesz elérhető. Egy ilyen könyvtár 15.0 Target-es projekthez csatlakoztatásakor az Xcode inkompatibilitási hibát jelez. A CocoaPods-ban a Deployment Target a Podfile-ban van beállítva: platform :ios, '16.0'.

swift
// Package.swift — Deployment Target SPM könyvtárhoz
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")
            ]
        )
    ]
)

// Kompatibilitás ellenőrzése a kódban
#if swift(>=5.9)
// Swift 5.9+ funkciók (Xcode 15+)
#endif

A Package.swift példában a platformok iOS 16+, macOS 13+, watchOS 9+, tvOS 16+ értékre vannak állítva. Bármely, iOS 16.0 alatti Deployment Target-tel rendelkező projekt nem tudja csatlakoztatni ezt a könyvtárat. A swiftSettings paraméter upcoming features-öket tartalmaz egy adott Swift-verzióhoz. Az SPM automatikusan ellenőrzi a platforms kompatibilitását függőség hozzáadásakor.

CocoaPods és Podfile

A Podfile a platform :ios, '16.0' direktívát használja. A pod install után a CocoaPods ellenőrzi minden pod-könyvtár Deployment Target-jét: ha legalább egy magasabb Target-tel rendelkezik, mint a projekt, a telepítés a "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" hibával végződik. Megoldás — csökkentse a problémás pod Target-jét, vagy növelje a projekt Target-jét.

ruby
# Podfile — példa Deployment Target-tel
platform :ios, '16.0'

# Deployment Target figyelmeztetések figyelmen kívül hagyása
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

A Podfile-beli post_install hook kényszeríti a Deployment Target 16.0 beállítását az összes pod-könyvtár számára. Ez akkor hasznos, ha az egyik pod magasabb Target-et ad meg, mint ami a funkcionalitásához szükséges. Csak akkor használja, ha biztos benne, hogy a pod nem használ magasabb iOS-verzióból származó API-kat.

@available és #available ellenőrzések Swift és Objective-C kódban

@available és #available — Swift és Objective-C direktívák azon API-k biztonságos meghívásához, amelyek csak bizonyos OS-verziókon érhetők el. Ha a projekt Deployment Target-je iOS 16.0, és egy metódus iOS 17.0-t igényel, a közvetlen hívás runtime crash-t okoz az iOS 16.0-16.x rendszerű eszközökön. Az elérhetőségi ellenőrzések — kötelező eszköz több iOS-verzió támogatásához.

@available — deklaratív ellenőrzés

Az @available direktíva osztályokra, metódusokra vagy teljes fájlokra alkalmazható. Ha az @available(iOS 17.0, *) egy osztály előtt van megadva, a teljes osztály csak iOS 17.0+-on érhető el. Az osztály iOS 16.0-n való meghívására tett kísérlet runtime hibát eredményez. Használja az @available-t az OS egy adott verziójára jellemző funkciók teljes moduljainak elkülönítésére. Az osztályon belüli metódusokhoz az @available lehetővé teszi az egyes funkciók elrejtését.

#available — feltételes végrehajtás

A #available direktíva (if #available) futásidőben ellenőrzi az OS-verziót, és csak egyezés esetén hajtja végre a kódot. Függvényeken belül használatos az új és a régi implementáció közötti választáshoz. Az Objective-C-ben a megfelelője az @available(iOS 17.0, *) az if-en belül. Bonyolultabb ellenőrzésekhez használja a ProcessInfo.processInfo.isOperatingSystemAtLeast-t a verziókomponensek (major, minor, patch) összehasonlításához.

swift
import UIKit
import SwiftUI

// 1. @available — teljes osztály csak iOS 17+ számára
@available(iOS 17.0, *)
class ObservationViewModel: ObservableObject {
    @Published var name: String = "User"

    // Observation keretrendszert használ — csak iOS 17+ elérhető
    func updateWithObservation() {
        let newName = "Updated via Observation"
        name = newName
    }
}

// 2. #available — feltételes hívás függvényen belül
func configureLiveActivity() {
    if #available(iOS 16.1, *) {
        // Live Activities API — iOS 16.1-től elérhető
        let activity = Activity<MyAttributes>(
            attributes: MyAttributes(name: "Live"),
            contentState: MyContentState(value: 42)
        )
        Task {
            await activity.activate()
        }
    } else {
        // Fallback: push értesítés vagy semmi
        print("Live Activities nem elérhető")
    }
}

// 3. ProcessInfo — pontos verzióellenőrzés
func checkOSVersion() {
    let osVersion = ProcessInfo.processInfo.operatingSystemVersion
    print("iOS \(osVersion.majorVersion).\(osVersion.minorVersion).\(osVersion.patchVersion)")

    // Összetevők összehasonlítása
    if osVersion.majorVersion >= 17 {
        print("iOS 17+ észlelve")
    }
}

// 4. Objective-C @available
// Az Objective-C-ben az @available használatos:
// if (@available(iOS 17.0, *)) { }

// 5. @available unavailable argumentummal
@available(*, unavailable, message: "Use configureWithSwiftUI instead")
func legacyConfigureMethod() { }

Az ObservationViewModel osztály az @available-t használja az iOS 17 funkcióinak elkülönítésére. A configureLiveActivity függvény a #available-t használja a Live Activities (iOS 16.1+) ellenőrzésére egy fallback implementációval. A ProcessInfo ellenőrzi az iOS pontos verzióját. Az @available(*, unavailable) egy metódust minden verzióban elérhetetlenként jelöl — új API-ra való migrációhoz. Ezen ellenőrzések nélkül egy 16.0 Deployment Target-tel rendelkező alkalmazás összeomlik az iOS 16.0-s eszközökön egy iOS 17 API meghívásakor.

Objective-C és @available

Az Objective-C az @available(iOS 17.0, *) utasítást használja ugyanazzal a szemantikával, mint a Swift #available. Különbség: az Objective-C futásidőben ellenőrzi, a Swift #available — szintén futásidőben, de a fordító számára utalásokkal az elágazások optimalizálásához. A Swift-tel együttműködő Objective-C kódban az elérhetőségi ellenőrzések az Objective-C oldalon szükségesek — a Swift-bridging nem ad automatikus ellenőrzéseket.

Hogyan válasszuk ki a megfelelő Deployment Target-et a projekthez

Az iOS Deployment Target kiválasztása — stratégiai döntés, amely három szempontot befolyásol: a közönség lefedettségét, az elérhető API-kat és a kód karbantartásának összetettségét. Nincs egyetlen helyes érték — a választás az alkalmazás célközönségétől, a minimálisan szükséges funkcióktól és a csapat visszamenőleges kompatibilitási támogatáshoz szükséges erőforrásaitól függ.

Első tényező — az iOS-verziók használati statisztikái. Az Apple közzéteszi az iOS telepítési adatait a WWDC-n és az Apple Developer Dashboard-ban. 2025 júniusában az eloszlás: iOS 15 — ~7%, iOS 16 — ~48%, iOS 17 — ~35%, iOS 18 — ~10%. A Target 16.0 választása 83%-os lefedettséget ad, Target 17.0 — 35%-ot. Tömegalkalmazásokhoz (közösségi média, üzenetküldők, e-kereskedelem) a Target 16.0 ajánlott. Speciális API-követelményekkel rendelkező részsikeres B2B-alkalmazásokhoz — Target 17.0.

Második tényező — szükséges API-k. Ha az alkalmazás kulcsfontosságú funkciója SwiftData (iOS 17+), Observation (iOS 17+) vagy Live Activities (iOS 16.1+) igényel, a Target nem lehet alacsonyabb a szükséges verziónál. A szükséges API-k elemzése a tervezési szakaszban megakadályozza azt a helyzetet, amikor a fejlesztés felénél kiderül, hogy magasabb Target szükséges. Használja az Availability Checks-t tartalék opcióként, de ne fő tervként.

Harmadik tényező — tesztelési erőforrások. A régebbi iOS-verziók támogatása szimulátorokon és valós eszközökön történő tesztelést igényel ezekkel a verziókkal. Az iOS 15 iPhone 6s/7-en, az iOS 16 — iPhone 8/X-en, az iOS 17 — iPhone XS/XR-en tesztelendő. Minden további backward compatibility verzió növeli a QA-időt. Ha a csapat kicsi, ésszerű a jelenlegi verziónál 2–3 verzióval alacsonyabb Target (16.0) választása — egyensúly a lefedettség és a munkaerő-ráfordítás között.

Alkalmazás típusaAjánlott TargetLefedettségIndoklás
Tömeges (közösségi média, piactér)iOS 16.0~83%Maximális közönség
Enterprise / B2BiOS 16.0~83%A vállalati eszközök lassan frissülnek
Startup / MVPiOS 17.0~35%Gyors fejlesztés új API-kon
Játékok (Metal 3+)iOS 17.0~35%Új grafikus API-kat igényelnek
Library/SDKiOS 15.0~90%Maximális kompatibilitás az ügyfelek számára

A könyvtáraknak és SDK-knak a lehető legalacsonyabb Deployment Target-tel kell rendelkezniük (15.0 vagy akár 14.0) — a könyvtár felhasználói bármilyen, az Önénél magasabb Target-tel rendelkezhetnek. Ha egy könyvtár iOS 17.0-t igényel, a projektek fele nem tudja csatlakoztatni. Az alkalmazásoknál ezzel szemben megengedheti magának a magasabb Target-et az új API-khoz való hozzáférés érdekében.

A Deployment Target csökkentése emelés után

Az iOS Deployment Target csökkentése — olyan feladat, amely a közönség bővítésének szükségességekor vagy egy régi projektekkel kompatibilis könyvtár kiadásakor merül fel. Az emeléssel ellentétben a csökkentés aktív kódmunkát igényel: az új (alacsonyabb) Target-ben nem elérhető API-k összes közvetlen hívását #available ellenőrzésekkel és fallback implementációkkal kell helyettesíteni.

Első lépés — API-leltár. Az Xcode nem ad fordítási hibát a Target csökkentésekor — csak sárga figyelmeztetésekkel jelez. Meg kell találnia az összes @available(iOS N+, *) jelölésű metódust és osztályt, ahol N magasabb az új Target-nél. Használja a projekt keresést (Cmd+Shift+F) az "available(iOS" mintára. Minden ilyen hívás — refaktorálási jelölt.

Második lépés — csere #available ellenőrzésekre. A magasabb verzióból származó minden API-hívás if #available(iOS N+, *) { } else { } blokkba kerül. Teljes osztályokhoz használja a #if os(iOS)-t @available-lel a típus szintjén. Ha az API-nak nincs ésszerű fallback-je (pl. Live Activities), a funkció ki van kapcsolva a régi verziókhoz, a felhasználó értesítésével.

swift
import UIKit
import SwiftUI

// Deployment Target csökkentése 17.0-ról 16.0-ra

// ELŐTTE (@available iOS 17.0):
@available(iOS 17.0, *)
func setupObservation() {
    // Observation framework — csak iOS 17+
    let model = ObservationViewModel()
    // ...
}

// UTÁNA (#available ellenőrzés):
func setupObservationCompatible() {
    if #available(iOS 17.0, *) {
        // iOS 17+: Observation framework
        let model = ObservationViewModel()
        // ...
    } else {
        // iOS 16.x: ObservableObject @Published-del
        let model = LegacyObservableViewModel()
        // ...
    }
}

// UIKit iOS 17+ API-hoz:
@available(iOS 17.0, *)
class ModernViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // UIKit TraitChanges (iOS 17+) használata
        registerForTraitChanges([UITraitVerticalSizeClass.self]) { _, _ in }
    }
}

// Fallback iOS 16-hoz:
class LegacyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Nincs registerForTraitChanges — traitCollectionDidChange-t használunk
    }

    override func traitCollectionDidChange(_: UITraitCollection?) {
        super.traitCollectionDidChange(nil)
        // Traits-változások feldolgozása iOS 16-hoz
    }
}

// Gyár az implementáció kiválasztásához iOS-verzió alapján
func makeViewController() -> UIViewController {
    if #available(iOS 17.0, *) {
        return ModernViewController()
    } else {
        return LegacyViewController()
    }
}

A kód a Target iOS 17.0-ról 16.0-ra csökkentését mutatja be. A setupObservation függvényt felváltotta a setupObservationCompatible egy #available ellenőrzéssel. A ViewController Modern (iOS 17+) és Legacy (iOS 16) részekre van bontva egy makeViewController gyárral, amely az OS-verzió alapján választja ki az implementációt. Ez az architektúra lehetővé teszi két Deployment Target fenntartását a teljes kódbázis duplikálása nélkül — csak verziózott modulok.

Xcode figyelmeztetések és elhárításuk

A Deployment Target csökkentése után az Xcode sárgán kiemeli az új Target-ben nem elérhető API-hívásokat. A "In iOS 16.0 and later" figyelmeztetés azt jelenti, hogy a metódus magasabb verziót igényel. Megoldások: @available vagy if #available hozzáadása (ajánlott), elnyomás @available(*, deprecated) segítségével fokozatos migrációhoz, vagy a hívás eltávolítása. A "Treat Warnings as Errors" beállítás a projektben ezeket a figyelmeztetéseket fordítási hibákká alakítja — kapcsolja be ezt az opciót az ellenőrzéshez.

Gyakran ismételt kérdések

Mi az iOS Deployment Target?

iOS Deployment Target — az a minimális iOS-verzió, amelyen az alkalmazás futhat. Az Xcode Project → Info → iOS Deployment Target menüpontban adható meg. A 16.0 Target-tel rendelkező alkalmazás nem telepíthető iOS 15.0-ra vagy alacsonyabbra. Az App Store e paraméter alapján szűri az alkalmazásokat — a nem támogatott verziójú felhasználók nem látják az alkalmazást. Android-megfelelője — a minSdkVersion.

Miben különbözik az iOS Deployment Target a minSdkVersion-től?

Mindkét paraméter az alkalmazás telepítéséhez szükséges minimális OS-verziót állítja be. Az iOS Deployment Target az Info.plist-ben (MinimumOSVersion) tárolódik, a minSdkVersion — az AndroidManifest.xml-ben. Az iOS-nek nincsenek megfelelői a targetSdkVersion és compileSdkVersion számára — minden viselkedésbeli változás az új Base SDK-val való fordítás során alkalmazandó. Androidban a viselkedésbeli változásokat a targetSdkVersion vezérli. Ellenőrzés a kódban: @available Swiftben vs Build.VERSION.SDK_INT Androidban.

Melyik iOS Deployment Target-et válasszuk 2026-ban?

Tömegalkalmazásokhoz iOS 16.0 (az eszközök 83%-a), startupokhoz és SwiftUI Observation/SwiftData projektekhez iOS 17.0 (az eszközök 35%-a) ajánlott. Az iOS 16.0 iPhone 8 és újabb készülékeken támogatott, tartalmazza a SwiftUI Layout, NavigationStack, Live Activities funkciókat. Az iOS 17.0 Observation, SwiftData, TipKit szolgáltatásokat nyújt. Könyvtárakhoz és SDK-khoz — iOS 15.0 a maximális kompatibilitás érdekében.

Hogyan ellenőrizhető az iOS-verzió Swift kódban?

Swiftben használja a #available(iOS 17.0, *) utasítást függvényeken belül a feltételes kódvégrehajtáshoz vagy a @available(iOS 17.0, *) utasítást osztály/metódus szinten a deklaratív ellenőrzéshez. A pontos verzióhoz — ProcessInfo.processInfo.operatingSystemVersion, amely OperatingSystemVersion-t ad vissza. Objective-C-ben használja a @available(iOS 17.0, *) utasítást if-en belül. Ellenőrzések nélkül a Deployment Target feletti API meghívása runtime crash-hez vezet.

Csökkenthető-e a Deployment Target a közzététel után?

Az iOS Deployment Target csökkentése lehetséges, de megköveteli a magasabb verziójú API-k összes közvetlen hívásának #available ellenőrzésekkel és fallback implementációkkal való helyettesítését. Az Xcode sárga figyelmeztetésekkel jelez, de nem ad hibát. Az ésszerű fallback nélküli API-k (Live Activities, SwiftData) a régebbi verziókon kikapcsolásra kerülnek. Ajánlott 2 verzióval az aktuális alatti Target-tel kezdeni a bonyolult migráció elkerülése érdekében.

Összefoglalás

  • iOS Deployment Target — az alkalmazás futtatásához szükséges minimális OS-verzió, a minSdkVersion megfelelője Androidban
  • Az Xcode Build Settings-ben (IPHONEOS_DEPLOYMENT_TARGET) konfigurálható és az Info.plist-ben (MinimumOSVersion) tárolódik
  • @available és #available — a fő Swift mechanizmusok a Deployment Target feletti API-k biztonságos meghívásához
  • A Target megválasztása befolyásolja az eszközlefedettséget: iOS 16.0 — 83%, iOS 17.0 — 35%, iOS 15.0 — 90%
  • Tömegalkalmazásokhoz iOS 16.0, könyvtárakhoz iOS 15.0, SwiftData startupokhoz iOS 17.0 ajánlott
  • A Target csökkentése a magasabb verziójú API-hívások #available ellenőrzésekkel és fallback-kel való refaktorálását igényli
  • Az iOS-ben a Base SDK mindig a legújabb — a viselkedésbeli változások minden alkalmazásra vonatkoznak, ellentétben az Android targetSdkVersion-nel

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is