Hogyan lehet az én iphone app meghatározhatja saját verziószámát?

szavazat
237

Írok egy iPhone app. Ez már megjelent, de szeretnék hozzá olyan funkció, ahol a verziószám jelenik meg.

Én inkább nem kell, hogy ezt manuálisan minden verziót kiadás ...

Van egy módja az Objective-C, hogy megtudja, mi a verzió az én app?

A kérdést 19/01/2009 19:32
a forrás felhasználó
Más nyelveken...                            


15 válasz

szavazat
216

Ahogy itt leírt , azt használja egy script, hogy átírják a header fájlt a jelenlegi Subversion változat számát. Ez a felülvizsgálat száma van tárolva a kRevisionNumber állandó. Tudok majd elérni a verzió és revízió számot valami hasonló a következő:

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

amely létrehoz egy húr a formátum „Version 1.0 (51)”.

Válaszolt 19/01/2009 20:00
a forrás felhasználó

szavazat
143

Építve Brad Larson választ, ha nagyobb és kisebb változata info tárolt információ plist (ahogy én is tettem egy adott projekt), ez jól működött nekem:

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

Most fordulatszámú kisebb változata kézzel lehet a fájdalom, és így egy repository revízió száma trükk ideális. Ha nem kötődik, hogy (ahogy én sem), a fenti kódrészlet hasznos lehet. Azt is előveszi az alkalmazás megjelenített nevét.

Válaszolt 15/08/2012 05:13
a forrás felhasználó

szavazat
46

Swift verzió külön-külön:

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

A ebbe repo, nézd meg:

https://github.com/goktugyil/EZSwiftExtensions

Válaszolt 19/03/2015 12:42
a forrás felhasználó

szavazat
41

Ez az, amit tettem én kérelmet

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

Remélhetőleg ez az egyszerű válasz segít valaki ...

Válaszolt 02/11/2013 21:01
a forrás felhasználó

szavazat
31

Megadhatja a CFBundleShortVersionStringhúr a plist.info és olvastam, hogy más programból a biztosított API .

Válaszolt 19/01/2009 19:46
a forrás felhasználó

szavazat
29

Két dolog van - építeni változat és alkalmazás verziója.

  1. Ahhoz, hogy App Változat:

    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    
  2. Ahhoz, hogy épít változat:

    NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    
Válaszolt 23/01/2015 09:01
a forrás felhasználó

szavazat
17
// Syncs with App Store and Xcode Project Settings Input
NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
Válaszolt 23/07/2014 19:15
a forrás felhasználó

szavazat
16

A tömör módja egy változata string XYZ formátum:

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

Vagy, csak XY:

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

Mindkét töredék vissza húrok, hogy akkor rendelhet a címkéhez objektum szöveges tulajdonság, pl

myLabel.text = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
Válaszolt 07/09/2013 03:58
a forrás felhasználó

szavazat
7

Próbálja meg a szótárban, mint: -

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

NSString *buildVersion = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey]
Válaszolt 15/05/2014 10:58
a forrás felhasználó

szavazat
4

Olvassa el a info.plist iratai az alkalmazást, és hogy az érték a legfontosabb CFBundleShortVersionString. Olvasás info.plist kapsz egy NSDictionary objektum

Válaszolt 22/01/2009 06:05
a forrás felhasználó

szavazat
1

Ha szüksége van egy kombinációja a két változat és épít num , itt egy rövid utat a 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)"

Hozzáadása as! Stringa végén vagy a appVersionvagy a buildNumvonal, hogy csak azt a részét, mint egy Stringtárgyat. Nincs szükség, hogy bár ha keres a teljes versionInfo.

Remélem ez segít!

Válaszolt 21/12/2016 09:35
a forrás felhasználó

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

Ennek alapján @rajat chauhan válasz nélkül kénytelen leadott String.

Válaszolt 10/04/2019 10:42
a forrás felhasználó

szavazat
0

Meg lehet próbálni ezt a módszert:

NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
Válaszolt 24/10/2017 18:15
a forrás felhasználó

szavazat
0

Használhatja a infoDictionary, amely megkapja a verzió részleteket info.plist tőled kb. Ez a kód működik a gyors 3. Csak hívja ezt a módszert, és megjeleníti a verzió bármilyen előnyös UI elem.

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)"
}
Válaszolt 31/07/2017 12:31
a forrás felhasználó

szavazat
0

Ez egy jó dolog, hogy kezelni felülvizsgálatával rendszer. Így, ha kap egy hibajelentést a felhasználó, akkor nézd meg, hogy felülvizsgálata kódot, és (remélhetőleg) reprodukálni a hibát futó pontosan ugyanazt a kódot, mint a felhasználó.

Az ötlet az, hogy minden alkalommal, amikor nem egy épít, akkor fut egy script, hogy megkapja a jelenlegi felülvizsgálata számát a kódot, és frissíti a fájlt a projekten belül (általában valamilyen formában token csere). Ezután egy hiba kezelési rutin, amely mindig tartalmazza a felülvizsgálat számát a hiba kimenet, vagy akkor megjeleníti azt egy „A” oldalon.

Válaszolt 19/01/2009 19:46
a forrás felhasználó

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