[iphone] 내 iPhone 앱이 자체 버전 번호를 어떻게 감지합니까?

iPhone 앱을 작성 중입니다. 이미 게시되었지만 버전 번호가 표시되는 기능을 추가하고 싶습니다.

오히려 릴리스 할 각 버전마다 수동 으로이 작업을 수행하지 않아도됩니다 …

objective-C에 내 앱의 버전이 무엇인지 알아내는 방법이 있습니까?



답변

여기서 설명하는 것처럼 스크립트를 사용하여 현재 Subversion 개정 번호로 헤더 파일을 다시 씁니다. 해당 개정 번호는 kRevisionNumber 상수에 저장됩니다. 그런 다음 다음과 유사한 것을 사용하여 버전 및 개정판 번호에 액세스 할 수 있습니다.

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

“버전 1.0 (51)”형식의 문자열을 만듭니다.


답변

Brad Larson의 답변을 바탕으로 info plist에 메이저 및 마이너 버전 정보가 저장되어 있으면 (특정 프로젝트에서했던 것처럼) 이것이 잘 작동했습니다.

- (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];
}

이제 부 버전을 수동으로 수정하는 것은 어려울 수 있으므로 소스 리포지토리 수정 번호 트릭을 사용하는 것이 이상적입니다. 내가 묶지 않은 것처럼 묶지 않았다면 위의 스 니펫이 유용 할 수 있습니다. 또한 앱의 표시 이름을 가져옵니다.


답변

둘 다 별도로 스위프트 버전 :

스위프트 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"];

답변

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