256 votes

Comment mon application iphone peut-elle détecter son propre numéro de version ?

Je suis en train d'écrire une application pour iPhone. Elle a déjà été publiée, mais j'aimerais ajouter une fonctionnalité permettant d'afficher son numéro de version.

Je préférerais ne pas avoir à le faire manuellement à chaque version que je publie...

Y a-t-il un moyen en Objective-C de savoir quelle est la version de mon application ?

224voto

Brad Larson Points 122629

Comme je le décris ici J'utilise un script pour réécrire un fichier d'en-tête avec mon numéro de révision Subversion actuel. Ce numéro de révision est stocké dans la constante kRevisionNumber. Je peux alors accéder à la version et au numéro de révision en utilisant quelque chose de similaire à ce qui suit :

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

qui créera une chaîne de caractères du format "Version 1.0 (51)".

151voto

idStar Points 3735

Dans le prolongement de la réponse de Brad Larson, si vous avez des informations sur les versions majeures et mineures stockées dans l'info plist (comme je l'ai fait sur un projet particulier), cela a bien fonctionné pour moi :

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

La révision manuelle d'une version mineure peut s'avérer pénible, et l'utilisation d'un numéro de révision du référentiel source est donc idéale. Si vous ne l'avez pas intégré (comme je ne l'ai pas fait), l'extrait ci-dessus peut être utile. Il récupère également le nom d'affichage de l'application.

43voto

Arkady Points 1136

Voici ce que j'ai fait dans mon application

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

J'espère que cette réponse simple pourra aider quelqu'un...

31voto

Jasper Bekkers Points 4949

Vous pouvez spécifier le CFBundleShortVersionString dans votre plist.info et lisez-la de manière programmatique en utilisant la fonction API fournie .

18voto

rodamn Points 788

Une façon succincte d'obtenir une chaîne de version en X.Y.Z le format est :

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

Ou, pour juste X.Y :

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

Ces deux extraits renvoient des chaînes de caractères que vous affecteriez à la propriété text de votre objet étiquette.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X