iPhone 앱을 작성 중입니다. 이미 게시되었지만 버전 번호가 표시되는 기능을 추가하고 싶습니다.
오히려 릴리스 할 각 버전마다 수동 으로이 작업을 수행하지 않아도됩니다 ...
objective-C에 내 앱의 버전이 무엇인지 알아내는 방법이 있습니까?
iPhone 앱을 작성 중입니다. 이미 게시되었지만 버전 번호가 표시되는 기능을 추가하고 싶습니다.
오히려 릴리스 할 각 버전마다 수동 으로이 작업을 수행하지 않아도됩니다 ...
objective-C에 내 앱의 버전이 무엇인지 알아내는 방법이 있습니까?
답변:
여기서 설명하는 것처럼 스크립트를 사용하여 현재 Subversion 개정 번호로 헤더 파일을 다시 씁니다. 해당 개정 번호는 kRevisionNumber 상수에 저장됩니다. 그런 다음 다음과 유사한 것을 사용하여 버전 및 개정판 번호에 액세스 할 수 있습니다.
[NSString stringWithFormat:@"Version %@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"], kRevisionNumber]
"버전 1.0 (51)"형식의 문자열을 만듭니다.
CFBundleShortVersionString
일반적으로 '버전'및 CFBundleVersion
빌드 번호에 원하는 것을 확인합니다 .
[NSString stringWithFormat:@"Version: %@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]
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
이 저장소에 포함되어 있으므로 확인하십시오.
이것이 제가 신청서에서 한 일입니다
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
이 간단한 대답이 누군가를 도울 수 있기를 바랍니다.
빌드 버전과 앱 버전의 두 가지가 있습니다.
앱 버전을 받으려면 :
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
빌드 버전을 얻으려면 :
NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
objectForInfoDictionaryKey:
대신 사용 하는 것이 좋습니다 infoDictionary] objectForKey:
(있는 경우). 아마 여기에 차이를 만들지 않을 것입니다;)
XYZ 형식으로 버전 문자열을 얻는 간결한 방법 은 다음과 같습니다.
[NSBundle mainBundle].infoDictionary[@"CFBundleVersion"]
또는 XY의 경우 :
[NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"]
이 스 니펫은 라벨 객체의 텍스트 속성에 할당 할 문자열을 반환합니다. 예 :
myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
사전을 다음과 같이 사용해보십시오.
NSDictionary *infoDictionary = [[NSBundle mainBundle]infoDictionary];
NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]
앱의 info.plist 파일을 읽고 키 CFBundleShortVersionString의 값을 가져 오십시오. info.plist를 읽으면 NSDictionary 객체가 제공됩니다.
infoDictionary를 사용하면 app의 info.plist에서 버전 세부 정보를 얻을 수 있습니다. 이 코드는 빠른 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)"
}
스위프트 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♦
많이합니다
당신이 필요한 경우 조합 모두의 버전 및 빌드 NUM을 , 여기에 사용하는 간단한 방법 스위프트 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
끝에 an 을 추가하십시오 . 전체를 찾고 있다면 그럴 필요가 없습니다.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 chauhan의 답변을 기반으로 강제로 캐스팅하지 않았습니다 String
.