programing

내 아이폰 앱은 어떻게 자체 버전 번호를 감지합니까?

instargram 2023. 4. 22. 08:25
반응형

내 아이폰 앱은 어떻게 자체 버전 번호를 감지합니까?

나는 아이폰 앱을 만들고 있다.이미 공개되어 있습니다만, 버전 번호가 표시되는 기능을 추가하고 싶습니다.

각 버전을 출시할 때마다 수동으로 이 작업을 수행할 필요가 없습니다.

objective-C에서 내 앱의 버전을 알 수 있는 방법이 있나요?

여기서 설명한 것처럼 스크립트를 사용하여 현재 서브버전 리비전 번호로 헤더파일을 고쳐 씁니다.이 리비전 번호는 kRevisionNumber 상수에 저장됩니다.그러면 다음과 같은 방법으로 버전 및 리비전 번호에 액세스할 수 있습니다.

[NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"], kRevisionNumber]

버전 1.0(51) 형식의 문자열이 생성됩니다.

Brad Larson의 답변을 바탕으로 (특정 프로젝트에서 했던 것처럼) 정보 목록에 메이저 및 마이너 버전 정보가 저장되어 있으면 이 방법이 효과적이었다.

- (NSString *)appNameAndVersionNumberDisplayString {
    NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
    NSString *appDisplayName = [infoDictionary objectForKey:@"CFBundleDisplayName"];
    NSString *majorVersion = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
    NSString *minorVersion = [infoDictionary objectForKey:@"CFBundleVersion"];

    return [NSString stringWithFormat:@"%@, Version %@ (%@)", 
                appDisplayName, majorVersion, minorVersion];
}

마이너 버전을 수동으로 수정하는 것은 번거로운 일이므로 소스 저장소 리비전 번호 트릭을 사용하는 것이 이상적입니다.만약 당신이 (나처럼) 묶지 않았다면, 위의 스니펫이 도움이 될 것입니다.또, 앱의 표시명도 꺼냅니다.

둘 다 개별적으로 Swift 버전:

스위프트 3

let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String

스위프트 2

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

이 레포에 포함되어 있습니다.확인해 주세요.

https://github.com/goktugyil/EZSwiftExtensions

이것이 내가 지원서에서 한 일이다.

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

이 간단한 답변이 누군가에게 도움이 되길 바랍니다...

를 지정할 수 있습니다.CFBundleShortVersionStringplist.info에 문자열을 입력하고 제공된 API를 사용하여 프로그래밍 방식으로 해당 문자열을 읽습니다.

빌드 버전과 앱 버전 두 가지가 있습니다.

  1. 앱 버전을 가져오려면:

    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    
  2. 빌드 버전을 가져오려면:

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

X.Y.Z 형식의 버전 문자열을 얻는 간단한 방법은 다음과 같습니다.

[NSBundle mainBundle].infoDictionary[@"CFBundleVersion"]

아니면 X만을 위해서.Y:

[NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"]

이 두 스니펫 모두 레이블 개체의 텍스트 속성에 할당할 문자열을 반환합니다.

myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
// Syncs with App Store and Xcode Project Settings Input
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

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

NSDictionary *infoDictionary = [[NSBundle mainBundle]infoDictionary];

NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]

Swift 5:

앱 버전과 빌드 버전 두 가지가 있습니다.

  • 앱 버전을 가져오려면:

     if let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
          // present appVersion
    }
    
  • 빌드 버전을 가져오려면:

     if let buildVersion = Bundle.main.infoDictionary?["CFBundleVersion"] as? String {
          // present buildVersion
     }
    

감사해요.@Brad Larson♦많습니다

앱의 info.plist 파일을 읽고 키 CFBundleShortVersionString 값을 가져옵니다.info.plist를 읽으면 NSDictionary 개체가 나타납니다.

앱의 info.plist에서 버전 세부 정보를 가져오는 infoDictionary를 사용할 수 있습니다.이 코드는 swift 3에 유효합니다.이 메서드를 호출하여 원하는 UI 요소에 버전을 표시하십시오.

Swift-3  

func getVersion() -> String {
    let dictionary = Bundle.main.infoDictionary!
    let version = dictionary["CFBundleShortVersionString"] as! String
    let build = dictionary["CFBundleVersion"] as! String
    return "v\(version).\(build)"
}

버전빌드 번호조합이 필요한 경우 Swift 3을 사용하는 간단한 방법이 있습니다.

let appVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"]!
let buildNum = Bundle.main.infoDictionary!["CFBundleVersion"]!
let versionInfo = "\(appVersion) (build \(buildNum))"
// versionInfo is now something like "2.3.0 (build 17)"

as! String appVersion ★★★★★★★★★★★★★★★★★」buildNum로서 하는 행String물건.하지만 만약 당신이 모든 것을 찾고 있다면 그럴 필요는 없다.versionInfo.

도움이 됐으면 좋겠네요!

func getAppVersion() -> String {
    let dictionary = Bundle.main.infoDictionary!
    let versionValue = dictionary["CFBundleShortVersionString"] ?? "0"
    let buildValue = dictionary["CFBundleVersion"] ?? "0"
    return "\(versionValue) (build \(buildValue))"
}

@rajat @에 따라 @rajat chauhan은 @rajat chauhan은 @rajat chauhan을 합니다.String.

이것은 리비전 제어 시스템으로 처리하는 것이 좋습니다.이렇게 하면 사용자로부터 버그 보고서를 받았을 때 해당 코드를 확인하고 (바람직하게) 사용자와 동일한 코드를 실행하고 있는 버그를 재현할 수 있습니다.

빌드할 때마다 코드의 현재 리비전 번호를 취득하여 프로젝트 내의 파일을 갱신하는 스크립트를 실행합니다(보통 토큰 치환).그런 다음 오류 출력에 항상 수정 번호를 포함하는 오류 처리 루틴을 작성하거나 "정보" 페이지에 표시할 수 있습니다.

다음의 방법을 시험해 볼 수 있습니다.

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

언급URL : https://stackoverflow.com/questions/458632/how-can-my-iphone-app-detect-its-own-version-number

반응형