iOS 앱에서 대상의 버전/빌드 번호를 프로그래밍 방식으로 표시하는 방법은 무엇입니까?
프로그래밍 방식으로 값을 가져오는 방법target version아래 이미지처럼?
내 Xcode 프로젝트의 대상의 속성 창에서 볼 수 있습니다.내 앱의 시작 화면에 이것을 표시하여 사람들이 현재 사용 중인 버전을 알고 싶습니다.
두 개의 숫자가 있습니다!
마케팅 릴리스 번호는 고객을 위한 버전 번호입니다.1.0으로 시작하여 2.0, 3.0으로 주요 업데이트, 1.1, 1.2로 경미한 업데이트, 1.0.1, 1.0.2로 버그 수정을 수행합니다. 이 숫자는 릴리스 및 새로운 기능에 대한 것입니다.9에서 멈출 필요는 없으며, 1.11.23은 합리적인 버전 번호입니다.
빌드 번호는 대부분 그때까지 만들어진 내부 빌드 수입니다.그러나 일부는 저장소의 지점 번호나 해당 커밋 번호와 같은 다른 번호를 사용합니다.이 숫자는 서로 다른 빌드를 구별하기 위해 고유해야 하며, 이 빌드는 약간의 증분 변경만 있습니다.
버전 번호 가져오기
목표-C:
NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
스위프트 < 3.0:
let appVersionString: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
Swift 3.0+(5.0으로 테스트):
let appVersionString: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
빌드 번호를 가져오는 방법
목표-C:
NSString * appBuildString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
스위프트 < 3.0:
let buildNumber: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
Swift 3.0+(5.0까지 테스트됨):
let buildNumber: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
둘 다 하나로 원하는 경우:
먼저 위의 행을 사용하고 다음 행을 사용합니다.
목표-C:
NSString * versionBuildString = [NSString stringWithFormat:@"Version: %@ (%@)", appVersionString, appBuildString];
Swift(5.0까지 테스트됨):
let versionAndBuildNumber: String = "\(appVersionString) (\(buildNumber))"
주의:
기본 번들의 값이 항상 있는 것은 아닙니다. 예를 들어 명령줄 애플리케이션에는CFBundleShortVersionString또는CFBundleVersion그래서 그 방법들은 돌아올 것입니다.nil코드에서 다운캐스트가 잘못되었기 때문에 충돌할 것입니다.그러나 일반적인 Cocoa iOS 및 Mac 앱에서는 이러한 값이 정의되며 삭제되지 않습니다.
이 테스트는 Xcode Version 7.3(7D175)에서 수행됩니다.빌드 번호는 종종 괄호/괄호로 작성됩니다.빌드 번호는 16진수 또는 10진수입니다.

Xcode에서 다음을 입력하여 빌드 번호를 10진수로 자동 증가시킬 수 있습니다.Run script프로젝트 설정의 빌드 단계
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
16진수 빌드 번호의 경우 이 스크립트를 사용합니다.
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$((0x$buildNumber))
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%X" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
위해서Xcode다음을 수행합니다.
1단계

2단계

3단계

프로젝트나 Xcode에서 아무것도 변경할 필요가 없습니다.다음은 두 제품을 위한 Swift 버전입니다.
let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
이 보고서에 포함되어 있습니다. 확인해 보십시오.
https://github.com/goktugyil/EZSwiftExtensions
다음은 Swift 3에 대한 동일한 코드입니다.
let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
프로그래밍 방식으로 버전 및 빌드 번호 표시 - Swift 4.0
let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") ?? "1.0"
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") ?? "1.0"
let versionAndBuildNumber = "Ver #\(versionNumber) ( Build #\(buildNumber) )"
번들을 확장해서 사용하기 편할 것입니다.
extension Bundle {
var releaseVersionNumber: String? {
return infoDictionary?["CFBundleShortVersionString"] as? String
}
var buildVersionNumber: String? {
return infoDictionary?["CFBundleVersion"] as? String
}
var applicationName: String {
return infoDictionary?["CFBundleDisplayName"] as? String ?? "ADKATech"
}
var applicationReleaseDate: String {
return infoDictionary?["ApplicationReleaseDate"] as? String ?? Date().description
}
var applicationReleaseNumber: Int {
return infoDictionary?["ApplicationReleaseNumber"] as? Int ?? 0
}
var releaseVersionNumberPretty: String {
return "\(releaseVersionNumber ?? "1.0.0")"
}
var buildVersionNumberPretty: String {
return "\(buildVersionNumber ?? "1")"
}
}
다음과 같이 사용할 수도 있습니다.
var appVersion: String {
//versionNumber
let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") ?? "1.0"
//buildNumber
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") ?? "1.0"
return "Version: #\(versionNumber) (#\(buildNumber))"
}
그런 다음 전역을 선언할 때 아무 곳에서나 사용할 수 있습니다.
print(appVersion)
출력:
Version: #1.0 (#1.0.3)
언급URL : https://stackoverflow.com/questions/3015796/how-to-programmatically-display-version-build-number-of-target-in-ios-app
'programing' 카테고리의 다른 글
| Django Rest Framework 일련 번호의 집계(및 주석이 달린 기타) 필드 (0) | 2023.05.09 |
|---|---|
| 날짜 범위를 순환하려면 어떻게 해야 합니까? (0) | 2023.05.09 |
| 이클립스 바로 가기 "라인 + 열로 이동" (0) | 2023.05.09 |
| MongoDB - 설치 오류 - mongodb 설치 마법사가 중간에 종료되었습니다. (0) | 2023.05.09 |
| 스토리보드 경고: 프로토타입 테이블 셀에 재사용 식별자가 있어야 합니다. (0) | 2023.05.09 |