Jak může můj iphone app odhalit své vlastní číslo verze?

hlasů
237

Píšu aplikaci pro iPhone. Je to již byly publikovány, ale chtěl bych se přidat funkci, kde se zobrazí její číslo verze.

Raději bych to dělat ručně, s každou verzí I uvolnění ...

Existuje způsob, jak v Objective-C, aby zjistili, co je verze mé aplikace?

Položena 19/01/2009 v 19:32
zdroj uživatelem
V jiných jazycích...                            


15 odpovědí

hlasů
216

Jak jsem popsal tady , já používám skript přepsat soubor záhlaví se svým současným číslem Subversion revize. Že revizní číslo je uloženo v kRevisionNumber konstantou. I pak může přistupovat k verzi a číslo revize pomocí něco podobná následující:

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

který vytvoří řetězec formátu „Verze 1.0 (51)“.

Odpovězeno 19/01/2009 v 20:00
zdroj uživatelem

hlasů
143

V návaznosti na Brada Larsona odpověď, pokud jste hlavní a vedlejší informace o verzi uložené v informačním plist (jako já na konkrétní projekt), to funguje dobře pro mě:

- (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];
}

Nyní vystupňováním menší verzi ručně může být bolest, a tak s použitím zdrojového repozitáře číslo revize trik je ideální. Pokud jste není vázána, že (jak jsem neměl), výše uvedený úryvek může být užitečné. Rovněž vytáhne zobrazované jméno app.

Odpovězeno 15/08/2012 v 05:13
zdroj uživatelem

hlasů
46

Swift verze pro oba samostatně:

Swift 3

let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String

Swift 2

let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String

Jeho součástí této repo, zkontrolujte si to:

https://github.com/goktugyil/EZSwiftExtensions

Odpovězeno 19/03/2015 v 12:42
zdroj uživatelem

hlasů
41

To je to, co jsem udělal v mé žádosti

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

Doufejme, že tato jednoduchá odpověď pomůže někoho ...

Odpovězeno 02/11/2013 v 21:01
zdroj uživatelem

hlasů
31

Můžete specifikovat CFBundleShortVersionStringřetězec ve svém plist.info a četl, že programově pomocí poskytované API .

Odpovězeno 19/01/2009 v 19:46
zdroj uživatelem

hlasů
29

Existují dvě věci - stavět verzi a verzi aplikace.

  1. Chcete-li získat verze aplikace:

    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    
  2. Chcete-li získat Verze sestavení:

    NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    
Odpovězeno 23/01/2015 v 09:01
zdroj uživatelem

hlasů
17
// Syncs with App Store and Xcode Project Settings Input
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
Odpovězeno 23/07/2014 v 19:15
zdroj uživatelem

hlasů
16

Stručné způsob, jak získat verzi řetězec XYZ formátu je:

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

Nebo jen pro XY:

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

Oba tyto úryvky vrací řetězce, které byste přiřadit vlastnost text štítek objektu, např

myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
Odpovězeno 07/09/2013 v 03:58
zdroj uživatelem

hlasů
7

Můžete zkusit pomocí slovníku, jako jsou: -

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

NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]
Odpovězeno 15/05/2014 v 10:58
zdroj uživatelem

hlasů
4

Přečíst Info.plist soubor aplikace a získat hodnotu klíče CFBundleShortVersionString. Čtení Info.plist vám dá NSDictionary objekt

Odpovězeno 22/01/2009 v 06:05
zdroj uživatelem

hlasů
1

Pokud potřebujete kombinaci obou verzí a vybudovat num , tady je krátká cesta pomocí 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)"

Přidání as! Stringke konci buď appVersionnebo buildNumřádku získat pouze tu část jako Stringobjekt. Není třeba, že i když, pokud hledáte pro úplné vás versionInfo.

Doufám, že to pomáhá!

Odpovězeno 21/12/2016 v 09:35
zdroj uživatelem

hlasů
0
func getAppVersion() -> String {
    let dictionary = Bundle.main.infoDictionary!
    let versionValue = dictionary["CFBundleShortVersionString"] ?? "0"
    let buildValue = dictionary["CFBundleVersion"] ?? "0"
    return "\(versionValue) (build \(buildValue))"
}

Na @rajat Chauhan odpověď bez nuceného obsazení na bázi String.

Odpovězeno 10/04/2019 v 10:42
zdroj uživatelem

hlasů
0

Můžete zkusit tuto metodu:

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
Odpovězeno 24/10/2017 v 18:15
zdroj uživatelem

hlasů
0

Můžete použít infoDictionary který dostane podrobnosti verze z Info.plist z vás aplikace. Tento kód funguje pro rychlé 3. Stačí zavolat tuto metodu a zobrazit verzi v žádném preferovaném prvku uživatelského rozhraní.

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)"
}
Odpovězeno 31/07/2017 v 12:31
zdroj uživatelem

hlasů
0

To je dobrá věc pro manipulaci s ovládacím revize systému. Tímto způsobem, když se dostanete hlášení o chybě od uživatele, můžete si vyzkoušet, že revize kódu a (snad) reprodukovat chybu běží přesně stejný kód jako uživatel.

Myšlenka je, že pokaždé, když provést build, bude spuštění skriptu, který dostane aktuální číslo revize kódu a aktualizuje soubor v rámci projektu (obvykle s nějakou formou symbolické náhrady). Pak můžete napsat zpracování chyb rutina, která vždy obsahuje číslo verze na výstupu chyby, nebo si můžete zobrazit na „O“ stránky.

Odpovězeno 19/01/2009 v 19:46
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more