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];
}
マイナーバージョンを手動で改訂するのは面倒なので、ソースリポジトリの改訂番号トリックを使用するのが理想的です。(私がしなかったように)それを関連付けていない場合は、上記のスニペットが役立ちます。また、アプリの表示名を引き出します。
両方の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
このレポに含まれています、チェックしてください:
これは私のアプリケーションでやったことです
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
うまくいけば、この簡単な答えが誰かを助けるでしょう...
CFBundleShortVersionString
plist.infoで文字列を指定し、提供されたAPIを使用してプログラムで読み取ることができます。
ビルドバージョンとアプリバージョンの2つがあります。
アプリのバージョンを取得するには:
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"]
これらのスニペットはどちらも、ラベルオブジェクトのtextプロパティに割り当てる文字列を返します。たとえば、
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オブジェクトが得られます
アプリの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)"
}
スウィフト5:
アプリバージョンとビルドバージョンの2つがあります。
アプリのバージョンを取得するには:
if let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
// present appVersion
}
ビルドバージョンを取得するには:
if let buildVersion = Bundle.main.infoDictionary?["CFBundleVersion"] as? String {
// present buildVersion
}
おかげで@Brad Larson♦
たくさんの
バージョンとビルド番号の両方の組み合わせが必要な場合は、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 chauhanの回答に基づいており、強制的ににキャストされていませんString
。