2016-05-25 2 views
0

j'applique une fonctionnalité à l'application iOS qui ont un comportement différent si l'application est fraîche installé ou tout simplement mis à jour à partir d'une ancienne versionComment faire la différence entre l'ouverture d'une application iOS après nouvelle installation et après une mise à jour

-à-dire je besoin pour afficher une alerte aux utilisateurs qui ouvrent l'application pour la première fois après la mise à jour d'une ancienne version et pour ne pas afficher cette nouvelle alerte aux nouveaux utilisateurs qui ont installé une nouvelle copie de la dernière version

Je connaissais cette information dans d'autres applications que j'ai faites auparavant en stockant le numéro de version et le numéro de build dans NSUserDefault mais le cas est maintenant que je n'ai pas ce code en place. Pour ce faire, je vais devoir soumettre une version supplémentaire à Apple Store, et même alors je ne peux détecter que la mise à jour de l'application à partir de cette version, mais la mise à jour de l'ancienne version sera considérée comme une nouvelle installation pas de mise à jour

Alors, est-ce que je peux obtenir cette information de l'iOS?

Répondre

0

Y a-t-il d'autres NSUserDefaults dans la version précédente qui sont obligatoires pour l'application? Vous pouvez l'utiliser comme une solution de contournement. Si ceux-ci existent, mettez en place l'alerte et ajoutez une nouvelle clé NSUserDefault que l'alerte a été vue et ne pas afficher à nouveau. Sinon, définissez le paramètre pour désactiver l'alerte indéfiniment.

Mais il est important de penser à de futures versions à venir.

+0

Cela pourrait être une bonne solution de contournement, merci –

0

Essayez ceci:

//Detect installation. 
NSString *currentVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; 
NSString *currentBuild = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; 
NSString *versionOfLastVersionRun = [[NSUserDefaults standardUserDefaults] objectForKey:@"VersionOfLastVersionRun"]; 
NSString *versionOfLastBuildRun = [[NSUserDefaults standardUserDefaults] objectForKey:@"VersionOfLastBuildRun"]; 

//Copy all the bundle JSON 
if (versionOfLastVersionRun == nil) { 
    //Do something on first installation 
} else if (![versionOfLastVersionRun isEqual:currentVersion]) { 
    //Do something if there is a new version 
} else if (![versionOfLastBuildRun isEqual:currentBuild]) { 
    //Do something if there is a new build 
} 

//Save values. 
[[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"VersionOfLastVersionRun"]; 
[[NSUserDefaults standardUserDefaults] setObject:currentBuild forKey:@"VersionOfLastBuildRun"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

J'espère que cela aide.

Bonne codification.

EDIT

Je n'ai pas sean que la question est marquée comme Swift, mais je vais à gauche cette réponse pour quelqu'un à l'avenir que peut-être trouver cela utile.

+0

Cette question est étiquetée "swift", pas "objective-c": veuillez fournir votre réponse dans Swift. Merci. – Moritz

+0

@EricD Désolé je n'ai pas vu l'étiquette, j'ai peur de ne pas pouvoir vous aider. –

+0

Je n'ai pas besoin d'aide, je ne suis pas le PO. Je vous disais simplement que votre réponse est hors sujet parce que c'est dans la mauvaise langue. :) Vous pouvez toujours supprimer votre réponse - ou demander à l'OP s'il a une réponse dans Objective-C (et si c'est le cas, il peut éditer sa question pour l'indiquer explicitement). – Moritz