Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> iOS

วิธีตรวจสอบ iOS Version ที่รันอยู่บนอุปกรณ์

ใช้ UIDevice.current.systemVersion เพื่อดึง iOS Version เป็น String

โค้ดพื้นฐาน


print("iOS Version: \(UIDevice.current.systemVersion)")
// Output: "iOS Version: 17.2.1"

แปลงเป็น Version Object เพื่อเปรียบเทียบ


let version = UIDevice.current.systemVersion
let versionNumber = (version as NSString).floatValue

if versionNumber >= 17.0 {
    print("iOS 17+ features available")
} else if versionNumber >= 15.0 {
    print("iOS 15+ features available")
}

ใช้ OperatingSystemVersion (แนะนำ)


let osVersion = ProcessInfo.processInfo.operatingSystemVersion
print("Major: \(osVersion.majorVersion), Minor: \(osVersion.minorVersion), Patch: \(osVersion.patchVersion)")

// ตรวจสอบ Version
if #available(iOS 17, *) {
    // iOS 17+ only code
} else {
    // Fallback
}

// หรือ
if ProcessInfo.processInfo.isOperatingSystemAtLeast(OperatingSystemVersion(majorVersion: 17, minorVersion: 0, patchVersion: 0)) {
    print("iOS 17 or later")
}

Extension ใช้งานง่าย


extension UIDevice {
    var iOSVersion: String { systemVersion }
    
    var majorVersion: Int {
        return Int(systemVersion.split(separator: ".").first ?? "0") ?? 0
    }
    
    func isVersionAtLeast(_ major: Int, _ minor: Int = 0, _ patch: Int = 0) -> Bool {
        return ProcessInfo.processInfo.isOperatingSystemAtLeast(
            OperatingSystemVersion(majorVersion: major, minorVersion: minor, patchVersion: patch)
        )
    }
}

// ใช้งาน
UIDevice.current.iOSVersion           // "17.2.1"
UIDevice.current.majorVersion         // 17
UIDevice.current.isVersionAtLeast(16) // true
UIDevice.current.isVersionAtLeast(17, 2) // true

Compile-time Check (#available)


if #available(iOS 17, *) {
    // Code ที่ compile เฉพาะ iOS 17+
    // ใช้ API ใหม่ได้ปลอดภัย
} else {
    // Fallback สำหรับ iOS เก่า
}

แนะนำ: ใช้ #available สำหรับ API ใหม่ ใช้ ProcessInfo สำหรับ Runtime Logic