programing

iOS 프로젝트의 최신 버전을 코드로 가져오려면 어떻게 해야 합니까?

bestprogram 2023. 5. 2. 23:01

iOS 프로젝트의 최신 버전을 코드로 가져오려면 어떻게 해야 합니까?

iOS 프로젝트/앱의 최신 버전을 하나의 앱으로 얻을 수 있으면 좋겠습니다.NSString파일 어딘가에 상수를 정의할 필요가 없는 개체입니다.두 곳에서 버전 값을 변경하고 싶지 않습니다.

프로젝트 대상 요약에서 내 버전과 일치할 때 값을 업데이트해야 합니다.

다음과 같이 버전 및 빌드 번호를 가져올 수 있습니다.

let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let build = Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String

또는 목표-C에서

NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"];
NSString * build = [[NSBundle mainBundle] objectForInfoDictionaryKey: (NSString *)kCFBundleVersionKey];

다음 방법이 범주에 있습니다.UIApplication:

extension UIApplication {

    static var appVersion: String {
        return Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
    }

    static var appBuild: String {
        return Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as! String
    }

    static var versionBuild: String {
        let version = appVersion, build = appBuild            
        return version == build ? "v\(version)" : "v\(version)(\(build))"
    }
}

요지: https://gist.github.com/ashleymills/6ec9fce6d7ec2a11af9b


목표-C에 해당하는 것은 다음과 같습니다.

+ (NSString *) appVersion
{
    return [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleShortVersionString"];    
}

+ (NSString *) build
{
    return [[NSBundle mainBundle] objectForInfoDictionaryKey: (NSString *)kCFBundleVersionKey];
}

+ (NSString *) versionBuild
{
    NSString * version = [self appVersion];
    NSString * build = [self build];

    NSString * versionBuild = [NSString stringWithFormat: @"v%@", version];

    if (![version isEqualToString: build]) {
        versionBuild = [NSString stringWithFormat: @"%@(%@)", versionBuild, build];
    }

    return versionBuild;
}

요지: https://gist.github.com/ashleymills/c37efb46c9dbef73d5dd

Xcode 8, Swift 3에서 작동한 내용은 다음과 같습니다.

let gAppVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") ?? "0"
let gAppBuild = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") ?? "0"

print("Version: \(gAppVersion)")
print("Build: \(gAppBuild)")

목표 C:

앱 버전을 얻으려면 다음을 사용해야 합니다.

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

빌드 버전을 가져오려면 다음을 사용해야 합니다.

NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; 

[빠른 버전: 5.2]

모든 iOS 앱은 앱 버전 번호를 Info.plist 파일에 저장해야 하지만 코드에 사용할 수 있는 문자열로 가져올 수 있는 내장 방법이 없습니다.

Info.plist 파일을 읽고 버전 번호를 자동으로 반환하는 UIApplication의 작은 확장자를 만들었습니다.

코드는 다음과 같습니다.

extension UIApplication {
    static var appVersion: String? {
        return Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String
    }
}

컨트롤러 내부

@IBOutlet weak var tv_version: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()
   
    //Display Version
    setUpCurrentVersion()
}


func setUpCurrentVersion(){
    tv_version.text = "v" + UIApplication.appVersion!
}

Swift에서는 다음을 사용하여 번들 버전을 가져올 수 있습니다.

let info:NSDictionary = NSBundle.mainBundle().infoDictionary!

let version:String = info.objectForKey("CFBundleShortVersionString") as! String

versionLabel.text = "Version:" + version

오픈 소스 프로젝트인 App Update Tracker는 클래스 메소드의 형태로 이 기능(및 기타 기능)을 제공합니다.

  • + (NSString *)getShortVersionString
  • + (NSString *)getLongVersionString

다음과 같이 사용할 수 있습니다.

#import "AppUpdateTracker.h"

NSLog(@"short version: %@", [AppUpdateTracker getShortVersionString]);
NSLog(@"long version: %@", [AppUpdateTracker getLongVersionString]);

다음은 이 두 가지를 위한 Swift 버전입니다.

let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String

이 보고서에 포함되어 있습니다. 확인해 보십시오.

https://github.com/goktugyil/EZSwiftExtensions

참고로

사용해야 하는 키의 현지화된 값을 얻으려면CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), "CFBundleShortVersionString" as CFString)

언급URL : https://stackoverflow.com/questions/7608632/how-do-i-get-the-current-version-of-my-ios-project-in-code