Cum poate detecta aplicația mea iPhone propriul număr de versiune?

voturi
237

Scriu o aplicație pentru iPhone. A fost deja publicate, dar aș dori să adăugați o caracteristică în cazul în care este afișat numărul versiunii.

Prefer sa nu ar trebui să facă acest lucru manual cu fiecare versiune de presă I ...

Există o modalitate în obiectiv-C, pentru a afla ce versiune este aplicația mea?

Întrebat 19/01/2009 la 19:32
sursa de către utilizator
În alte limbi...                            


15 răspunsuri

voturi
216

Așa cum am descris aici , folosesc un script pentru a rescrie un fișier antet cu numărul meu curent de revizuire Subversion. Acest număr este stocat în revizie constanta kRevisionNumber. Pot accesa atunci versiunea și numărul de revizuire utilizând ceva similar cu următorul text:

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

care va crea un șir de format „Versiunea 1.0 (51)“.

Publicat 19/01/2009 la 20:00
sursa de către utilizator

voturi
143

Bazându-se pe răspunsul Brad Larson, dacă aveți multe informații majore și minore versiune stocată în fișierul .plist info (așa cum am făcut-o pe un anumit proiect), aceasta a lucrat bine pentru mine:

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

Acum turatii o versiune minoră manual poate fi o durere, și așa mai departe, folosind un truc sursă de depozit număr de revizuire este ideal. Dacă nu ați legat că (așa cum nu am avut), fragmentul de mai sus poate fi util. De asemenea, scoate numele de afișare a aplicației.

Publicat 15/08/2012 la 05:13
sursa de către utilizator

voturi
46

Versiunea Swift pentru ambele separat:

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

Sale incluse în acest repo, verificați-l:

https://github.com/goktugyil/EZSwiftExtensions

Publicat 19/03/2015 la 12:42
sursa de către utilizator

voturi
41

Aceasta este ceea ce am făcut în cererea mea

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

Să sperăm că acest răspuns simplu va ajuta pe cineva ...

Publicat 02/11/2013 la 21:01
sursa de către utilizator

voturi
31

Puteți specifica CFBundleShortVersionStringșirul în plist.info și citit că programatic folosind API - ul furnizat .

Publicat 19/01/2009 la 19:46
sursa de către utilizator

voturi
29

Există două lucruri - construi versiune și versiunea aplicației.

  1. Pentru a obține versiunea App:

    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    
  2. Pentru a obține versiunea Build:

    NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    
Publicat 23/01/2015 la 09:01
sursa de către utilizator

voturi
17
// Syncs with App Store and Xcode Project Settings Input
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
Publicat 23/07/2014 la 19:15
sursa de către utilizator

voturi
16

Un mod succint pentru a obține un șir de caractere versiune în XYZ format este:

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

Sau, pentru doar XY:

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

Ambele fragmente returnează șiruri pe care le-ar atribui proprietatea de text eticheta obiectului, de exemplu,

myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
Publicat 07/09/2013 la 03:58
sursa de către utilizator

voturi
7

Puteți încerca să utilizați dicționarul ca: -

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

NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]
Publicat 15/05/2014 la 10:58
sursa de către utilizator

voturi
4

Citiți fișierul info.plist al aplicației și de a obține valoarea pentru CFBundleShortVersionString cheie. Reading info.plist vă va da un obiect NSDictionary

Publicat 22/01/2009 la 06:05
sursa de către utilizator

voturi
1

Dacă aveți nevoie de o combinație a ambelor versiune și a construi num , aici e un mod scurt , folosind 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)"

Adăugați o as! Stringla sfârșitul fie appVersionsau buildNumlinie pentru a obține numai acea parte ca un Stringobiect. Nu este nevoie pentru că , deși , dacă sunteți în căutarea pentru plin versionInfo.

Sper ca asta ajuta!

Publicat 21/12/2016 la 09:35
sursa de către utilizator

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

Bazat pe @rajat răspuns Chauhan fără a forțat să arunce String.

Publicat 10/04/2019 la 10:42
sursa de către utilizator

voturi
0

Puteți încerca această metodă:

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
Publicat 24/10/2017 la 18:15
sursa de către utilizator

voturi
0

Puteți utiliza infoDictionary care primește detaliile versiune din info.plist de tine app. Acest cod funcționează pentru rapidă 3. Doar numim această metodă și pentru a afișa versiunea în orice element UI preferat.

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)"
}
Publicat 31/07/2017 la 12:31
sursa de către utilizator

voturi
0

Acesta este un lucru bun să se ocupe cu un sistem de control de revizuire. În acest fel, atunci când veți obține un raport de eroare de la un utilizator, puteți verifica faptul că revizuirea codului și (sperăm) reproduce bug-ul care rulează același cod exact ca utilizator.

Ideea este că de fiecare dată când faci o construi, va rula un script care devine numărul curent de revizuire a codului și actualizează un fișier în cadrul proiectului dumneavoastră (de obicei, cu o anumită formă de înlocuire jeton). Puteți apoi scrie o manipulare de rutină de eroare, care include întotdeauna numărul de revizuire în eroare de ieșire, sau îl puteți afișa pe pagina „Despre“.

Publicat 19/01/2009 la 19:46
sursa de către utilizator

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