当前位置:  开发笔记 > 编程语言 > 正文

我的iphone应用程序如何检测自己的版本号?

如何解决《我的iphone应用程序如何检测自己的版本号?》经验,为你挑选了9个好方法。

我正在写一个iPhone应用程序.它已经发布,但我想添加一个显示其版本号的功能.

对于我发布的每个版本,我宁愿不必手动执行此操作...

在Objective-C中有没有办法找出我的应用程序的版本是什么?



1> Brad Larson..:

正如我在这里描述的,我使用脚本用我当前的Subversion修订版号重写头文件.该修订号存储在kRevisionNumber常量中.然后,我可以使用类似于以下内容的方式访问版本和修订号:

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

这将创建格式为"Version 1.0(51)"的字符串.


这返回了我的构建版本所以我使用了这个.[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"]
CFBundleVersion不正确,因为Xcode错误地使用内部版本而不是版本号填充该plist条目.jspooner是对的.
有关版本号与内部版本号的详细说明,请参阅http://stackoverflow.com/questions/6851660/version-vs-build-in-xcode-4.确认`CFBundleShortVersionString`你通常想要'版本'和'CFBundleVersion`为Build编号.
kRevisionNumber似乎对我不起作用.为了获得指定的输出,我做了这个(使用@jspooner的修复):`[NSString stringWithFormat:@"Version:%@(%@)",[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]`

2> idStar..:

基于Brad Larson的答案,如果您在信息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> Esqarrouth..:

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

它包含在这个回购中,请查看:

https://github.com/goktugyil/EZSwiftExtensions



4> Arkady..:

这就是我在申请中所做的

NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

希望这个简单的答案能帮助某人......



5> Jasper Bekke..:

您可以CFBundleShortVersionString在plist.info中指定字符串,并使用提供的API以编程方式读取该字符串.



6> Shaik Riyaz..:

有两件事 - 构建版本和应用程序版本.

    要获得应用版本:

    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    

    要获得Build版本:

    NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    



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



8> rodamn..:

获取XYZ格式的版本字符串的简洁方法是:

[NSBundle mainBundle].infoDictionary[@"CFBundleVersion"]

或者,对于XY:

[NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"]

这两个片段都返回您将分配给标签对象的文本属性的字符串,例如

myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];



9> 小智..:

您可以尝试使用字典: -

NSDictionary *infoDictionary = [[NSBundle mainBundle]infoDictionary];

NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有