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
'programing' 카테고리의 다른 글
하위 분류할 수 없는 클래스는 무엇입니까? (0) | 2023.05.02 |
---|---|
SUMIF 날짜가 특정 월에 해당하는 Excel 공식 (0) | 2023.05.02 |
postgresql에서 특정 열이 있는 테이블을 찾는 방법 (0) | 2023.05.02 |
MongoDB 복제 세트에서 기본 DB 서버 IP를 아는 방법은 무엇입니까? (0) | 2023.05.02 |
각도를 사용하여 새 탭에서 링크를 여는 방법은 무엇입니까? (0) | 2023.05.02 |