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

วิธีดึง Version และ Build Number ของโปรเจกต์ iOS ในโค้ด

Version (CFBundleShortVersionString) และ Build Number (CFBundleVersion) เก็บอยู่ใน Info.plist เข้าถึงได้ผ่าน Bundle.main

โค้ดดึงค่า

// Version (เช่น 1.2.3)
let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "Unknown"

// Build Number (เช่น 42)
let build = Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as? String ?? "Unknown"

print("Version: \(version), Build: \(build)")
// Output: Version: 1.2.3, Build: 42

Extension ใช้งานง่าย

extension Bundle {
    var appVersion: String {
        return object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? "1.0"
    }
    
    var buildNumber: String {
        return object(forInfoDictionaryKey: kCFBundleVersionKey as String) as? String ?? "1"
    }
    
    var fullVersion: String {
        return "\(appVersion) (\(buildNumber))"
    }
}

// ใช้งาน
let version = Bundle.main.appVersion      // "1.2.3"
let build = Bundle.main.buildNumber       // "42"
let full = Bundle.main.fullVersion        // "1.2.3 (42)"

การใช้งานจริง

  • แสดงใน Settings/About Screen
  • ส่งพร้อม API Request (Header: X-App-Version)
  • Crash Reporting (Crashlytics, Sentry)
  • Feature Flag ตาม Version
  • Force Update Logic
// ตัวอย่าง Force Update
func checkForceUpdate() {
    let currentVersion = Bundle.main.appVersion
    // เรียก API เช็ค Minimum Version จาก Server
    // หาก current < minimum → แสดง Force Update Alert
}

Auto Increment Build Number

ใน Xcode: Target → Build Settings → Versioning System = Apple Generic → ใช้ Script ใน Build Phases:

# Run Script Phase
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

หรือใช้ fastlane action increment_build_number