Je dois vérifier quand mon application est lancée si elle a été mise à jour, car j'ai besoin de pour que l'affichage apparaisse uniquement lorsque l'application est d'abord installée pour apparaître à nouveau après avoir été mise à jour .Vérifiez si mon application IOS est mise à jour
Répondre
Vous pouvez enregistrer une valeur (par exemple, le numéro de version de l'application actuelle) à NSUserDefaults
et la vérifier chaque fois que l'utilisateur démarre l'application.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// ...
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *currentAppVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
NSString *previousVersion = [defaults objectForKey:@"appVersion"];
if (!previousVersion) {
// first launch
// ...
[defaults setObject:currentAppVersion forKey:@"appVersion"];
[defaults synchronize];
} else if ([previousVersion isEqualToString:currentAppVersion]) {
// same version
} else {
// other version
// ...
[defaults setObject:currentAppVersion forKey:@"appVersion"];
[defaults synchronize];
}
return YES;
}
La version swift-2 ressemble à ceci:
let defaults = NSUserDefaults.standardUserDefaults()
let currentAppVersion = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let previousVersion = defaults.stringForKey("appVersion")
if previousVersion == nil {
// first launch
defaults.setObject(currentAppVersion, forKey: "appVersion")
defaults.synchronize()
} else if previousVersion == currentAppVersion {
// same version
} else {
// other version
defaults.setObject(currentAppVersion, forKey: "appVersion")
defaults.synchronize()
}
La version swift-3 ressemble à ceci:
let defaults = UserDefaults.standard
let currentAppVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let previousVersion = defaults.string(forKey: "appVersion")
if previousVersion == nil {
// first launch
defaults.set(currentAppVersion, forKey: "appVersion")
defaults.synchronize()
} else if previousVersion == currentAppVersion {
// same version
} else {
// other version
defaults.set(currentAppVersion, forKey: "appVersion")
defaults.synchronize()
}
comment nous vérifions si l'application déjà livré ne supporte pas le mécanisme ci-dessus? – damithH
@damithH Si votre application expédiée utilisait NSUserDefaults, vérifiez simplement l'existence de la clé que vous utilisiez. –
Vous pouvez stocker un numéro de version d'application dans NSUserDefaults et le vérifier chaque fois que votre application est lancée. Si le numéro n'est pas disponible, c'est une nouvelle installation. Si c'est changé, c'est une mise à jour.
J'ai lu qu'après une mise à jour le NSUserDefaults n'est pas supprimé, ce qui ne m'aiderait pas, cela fonctionnerait si un utilisateur supprime l'application d'abord et la réinstalle – user2412870
@ user2412870 Stockez votre numéro de version dans NSUserDefaults et vérifier, si elle est mise à jour, vous pouvez vérifier si le numéro de version est similaire au numéro enregistré dans NSUserDefaults – pre
swift version avec une amélioration importante par rapport à la réponse acceptée:
- à l'aide
infoDictionary
au lieu deobjectForInfoDictionaryKey
garantit que le résultat est indépendant de la langue de l'appareil, sinon vous risquez de finir dans certains cas rares croire qu'il ya une mise à niveau, alors qu'en réalité il est juste un changement de langue de l'appareil - en utilisant un UserDefaults clé identique au principal Bundle infoDictionary pour plus de clarté sur ce qui est exactement stocké
- paramètre affacturage code currentVersion
- Swift 3 syntaxe
code:
let standardUserDefaults = UserDefaults.standard
let shortVersionKey = "CFBundleShortVersionString"
let currentVersion = Bundle.main.infoDictionary![shortVersionKey] as! String
let previousVersion = standardUserDefaults.object(forKey: shortVersionKey) as? String
if previousVersion == currentVersion {
// same version
} else {
// replace with `if let previousVersion = previousVersion {` if you need the exact value
if previousVersion != nil {
// new version
} else {
// first launch
}
standardUserDefaults.set(currentVersion, forKey: shortVersionKey)
standardUserDefaults.synchronize()
}
3.x Swift
Juste au lancement AppVersionUpdateNotifier initialiser app et AppUpdateNotifier protocole conforme, profitez.
class AppVersionUpdateNotifier {
static let KEY_APP_VERSION = "key_app_version"
static let shared = AppVersionUpdateNotifier()
private let userDefault:UserDefaults
private var delegate:AppUpdateNotifier?
private init() {
self.userDefault = UserDefaults.standard
}
func initNotifier(_ delegate:AppUpdateNotifier) {
self.delegate = delegate
checkVersionAndnotify()
}
private func checkVersionAndnotify() {
let versionOfLastRun = userDefault.object(forKey: AppVersionUpdateNotifier.KEY_APP_VERSION) as? Int
let currentVersion = Int(Bundle.main.buildVersion)!
if versionOfLastRun == nil {
// First start after installing the app
} else if versionOfLastRun != currentVersion {
// App was updated since last run
delegate?.onVersionUpdate(newVersion: currentVersion, oldVersion: versionOfLastRun!)
} else {
// nothing changed
}
userDefault.set(currentVersion, forKey: AppVersionUpdateNotifier.KEY_APP_VERSION)
}
}
protocol AppUpdateNotifier {
func onFirstLaunch()
func onVersionUpdate(newVersion:Int, oldVersion:Int)
}
extension Bundle {
var shortVersion: String {
return infoDictionary!["CFBundleShortVersionString"] as! String
}
var buildVersion: String {
return infoDictionary!["CFBundleVersion"] as! String
}
}
//*************************
//Use: Example
//*************************
extention AppDelagate: AppUpdateNotifier {
func onVersionUpdate(newVersion: Int, oldVersion: Int) {
// do something
}
func onFirstLaunch() {
//do something
}
}
Voici un code simple pour savoir si la version actuelle est différente
-(BOOL) needsUpdate
{
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString* appID = infoDictionary[@"CFBundleIdentifier"];
NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?bundleId=%@", appID]];
NSData* data = [NSData dataWithContentsOfURL:url];
NSDictionary* lookup = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
if ([lookup[@"resultCount"] integerValue] == 1)
{
NSString* appStoreVersion = lookup[@"results"][0][@"version"];
NSString* currentVersion = infoDictionary[@"CFBundleShortVersionString"];
if (![appStoreVersion isEqualToString:currentVersion])
{
NSLog(@"Need to update [%@ != %@]", appStoreVersion, currentVersion);
return YES;
}
}
return NO;
}
Note (ce travail de code sur simulateur aussi.): Assurez-vous que lorsque vous entrez dans la nouvelle version dans iTunes, cela correspond à la version de l'application que vous libérez. Si ce n'est pas le cas, le code ci-dessus retournera toujours YES indépendamment de la mise à jour de l'utilisateur.
- 1. Comment répondre si la mise à jour iOS casse mon application?
- 2. Vérifiez si mon application est en cours d'exécution dans Android
- 3. Vérifiez si mon application est installée sur un Windows Phone
- 4. Mise à jour mon application android
- 5. boucle de mise à jour .ipa Xcode: Mise à jour disponible, une application mise à jour
- 6. Vérifiez si le fil RSS a une mise à jour?
- 7. ios Application Autorisation refusée application de mise à jour
- 8. Vérifiez si l'activité a été appelée dans mon application
- 9. Mise à jour d'une application mobile Flex
- 10. Vérifiez si mon numéro twilio est occupé
- 11. iOS: Mise à jour ancienne application à Retina graphiques (TweeJump)
- 12. Mise à jour d'une application iOS dans l'Apple Store
- 13. Vérifiez si Google Maps est installé - iOS 10.2.1
- 14. Vérifiez si l'utilisateur a autorisé votre application sur ios
- 15. Mise à jour d'une application iOS avec uniquement l'ID d'ensemble
- 16. Comment savoir si mon application est actuellement utilisée dans ios
- 17. Vérifiez que la mise à jour d'AppCache est terminée
- 18. Vérifiez si l'utilisateur est connecté à iCloud? Swift/iOS
- 19. Mise à jour de l'icône App pour une application iOS
- 20. Comment vérifier si iOS a une mise à jour disponible?
- 21. mise à jour IOS BadgeValue
- 22. Puis-je vérifier la mise à jour de la version iOS depuis mon application?
- 23. Mise à jour application ios Appstore pour permettre uniquement iPhone
- 24. Vérifiez si Bluetooth est activé à l'aide d'une application Android
- 25. Vérifiez si une application est installée à l'aide Swift
- 26. Application iOS - mise à jour du temps d'attente
- 27. Vérifiez si la date est correcte dans IOS
- 28. Vérifiez si l'utilisateur est une page fan ios
- 29. mise à jour vers iOS 10.1.1 a cassé mon jeu
- 30. Joomla - Vérifiez si un article est mis à jour
vous avez besoin d'élaborer sur cette question: Qu'est-ce qui est en train d'être mis à jour? l'application elle-même ou des fichiers dans l'application ou des fichiers à télécharger à partir d'un serveur distant? –
l'application elle-même est en cours de mise à jour – user2412870