Hoe kan mijn iphone app op te sporen zijn eigen versie nummer?

stemmen
237

Ik ben het schrijven van een iPhone app. Het is al bekend, maar ik zou graag een functie waar het versienummer wordt weergegeven toe te voegen.

Ik zou liever niet om dit handmatig doen met elke versie Ik laat ...

Is er een manier in Objective-C uit te vinden wat de versie is van mijn app?

De vraag is gesteld op 19/01/2009 om 19:32
bron van user
In andere talen...                            


15 antwoorden

stemmen
216

Zoals ik hier beschrijf , gebruik ik een script om een header-bestand te herschrijven met mijn huidige Subversion revisie nummer. Dat revisienummer wordt opgeslagen in het kRevisionNumber constant. Ik kan dan toegang tot de versie en revisie nummer met iets wat lijkt op het volgende:

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

die zal een reeks van het formaat "Versie 1.0 (51)" te creëren.

antwoordde op 19/01/2009 om 20:00
bron van user

stemmen
143

Voortbouwend op antwoord Brad Larson's, als je grote en kleine versie informatie hebben opgeslagen in de info plist (zoals ik deed op een bepaald project), dit werkte goed voor mij:

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

Nu revving een kleine versie handmatig kan lastig zijn, en dus het gebruik van een bron archief revisie nummer truc is ideaal. Als u nog niet bent gebonden dat in (zoals ik had niet), het bovenstaande fragment kan nuttig zijn. Het trekt ook weergave naam van de app.

antwoordde op 15/08/2012 om 05:13
bron van user

stemmen
46

Swift versie voor zowel afzonderlijk:

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

Zijn opgenomen in deze repo, check it out:

https://github.com/goktugyil/EZSwiftExtensions

antwoordde op 19/03/2015 om 12:42
bron van user

stemmen
41

Dit is wat ik heb gedaan in mijn toepassing

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

Hopelijk deze eenvoudige antwoord zal iemand helpen ...

antwoordde op 02/11/2013 om 21:01
bron van user

stemmen
31

U kunt de opgeven CFBundleShortVersionStringtekenreeks in uw plist.info en gelezen dat het programma op basis van de ontvangen API .

antwoordde op 19/01/2009 om 19:46
bron van user

stemmen
29

Er zijn twee dingen - te bouwen versie en app-versie.

  1. Om App versie op te halen:

    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    
  2. Om Buildversie:

    NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    
antwoordde op 23/01/2015 om 09:01
bron van user

stemmen
17
// Syncs with App Store and Xcode Project Settings Input
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
antwoordde op 23/07/2014 om 19:15
bron van user

stemmen
16

Een beknopte manier om een versie string verkrijgen XYZ formaat is:

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

Of, voor slechts XY:

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

Beide fragmenten terug strings die je zou toewijzen aan eigenschap text uw label object, bv

myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
antwoordde op 07/09/2013 om 03:58
bron van user

stemmen
7

U kunt proberen met behulp van woordenboek als: -

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

NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]
antwoordde op 15/05/2014 om 10:58
bron van user

stemmen
4

Lees de info.plist bestand van uw app en de waarde voor de belangrijkste CFBundleShortVersionString. Het lezen van info.plist krijgt u een NSDictionary object te geven

antwoordde op 22/01/2009 om 06:05
bron van user

stemmen
1

Als u een nodig combinatie van beide versie en bouwen num , hier is een korte weg met behulp van 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)"

Toevoegen as! Stringaan het einde van hetzij de appVersionof buildNumregel uitsluitend dat deel als krijgen Stringobject. Geen behoefte aan dat, hoewel als je op zoek bent naar de volle versionInfo.

Ik hoop dat dit helpt!

antwoordde op 21/12/2016 om 09:35
bron van user

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

Op basis van @rajat chauhan antwoord zonder geforceerde geworpen String.

antwoordde op 10/04/2019 om 10:42
bron van user

stemmen
0

U kunt proberen deze methode:

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
antwoordde op 24/10/2017 om 18:15
bron van user

stemmen
0

U kunt de infoDictionary waarop de versie informatie krijgt van info.plist van je app te gebruiken. Deze code werkt voor een snelle 3. noemen Alleen deze methode en de versie weer te geven in iedere gewenste UI-element.

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)"
}
antwoordde op 31/07/2017 om 12:31
bron van user

stemmen
0

Dit is een goede zaak te behandelen met een versie controle systeem. Op die manier als je een bug report van een gebruiker, kunt u kijken op dat de herziening van de code en (hopelijk) te reproduceren de bug loopt exact dezelfde code als de gebruiker.

Het idee is dat elke keer dat je een build doet, zul je een script dat de huidige herziening nummer van uw code krijgt en werkt een bestand in uw project (meestal met een of andere vorm van token vervanging) uit te voeren. U kunt dan schrijven een error handling routine die altijd omvat de revisie nummer in de fout output, of u kunt deze weer te geven op een "About" pagina.

antwoordde op 19/01/2009 om 19:46
bron van user

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