9
votes

Découvrez la première ouverture de l'application lors de la mise à jour de la version plus récente

Le comportement actuel de l'application est, l'utilisateur connecté une fois une fois ne sera déconnecté que si l'utilisateur clique sur des clics explicitement sur la déconnexion.

Je garde l'utilisateur connecté, même si l'utilisateur ferme l'application et l'ouvre à nouveau.

Lorsque la nouvelle version de mon application est publiée dans AppStore, je souhaite savoir si l'utilisateur a mis à jour mon application et l'a ouvert pour la première fois.

à ce point, je veux les faire connecter à nouveau.

Y a-t-il un moyen de savoir à la première fois l'application après sa mise à jour de la dernière version?


0 commentaires

5 Réponses :


3
votes

Vous pouvez enregistrer votre actualisation à NSUserDefaults et utiliser cette méthode pour vérifier votre version chaque fois que l'application éveille: xxx

si le courant de courage est différent de ... Son temps pour montrer le connexion! J'espère que cela vous aide.


0 commentaires

6
votes

créer une sorte de système de version de la version. Remarque: Vous pouvez activer Xcode de créer des sauvegardes et des versions chaque fois que vous apportez des modifications substantielles sur le code.

Il existe un certain nombre de façons de créer une constante de version, de l'enregistrer et de le lire. p>

Lorsque vous mettez à jour une application dans le magasin, il existe des données d'application qui persistent de la version précédente installée de l'application, que vous pouvez lire pour déterminer la version et, puis mettre à jour les données persistantes à préparer Pour le prochain cycle de mise à jour. p>

Cette réponse était une solution très populaire dans une autre question similaire. P >

ou, essayez quelque chose comme @ Jitendragandhi, la réponse de l'OBJC de Jitendragandhi ci-dessous ou si vous utilisez Swift, essayez quelque chose comme mon port de l'exemple d'objc de @ Jitendragandhi à SWIFT: P>

func hasAppBeenUpdatedSinceLastRun() -> Bool {
    var bundleInfo = Bundle.main.infoDictionary!
    if let currentVersion = bundleInfo["CFBundleShortVersionString"] as? String {
        let userDefaults = UserDefaults.standard

        if userDefaults.string(forKey: "currentVersion") == (currentVersion) {
            return false
        }
        userDefaults.set(currentVersion, forKey: "currentVersion")
        userDefaults.synchronize()
        return true
    } 
    return false;
}


1 commentaires

Vous utilisez la variable de 'CurrentVersion' hors de sa portée !!



2
votes

Si vous voulez une solution simple et facile, utilisez cette fonction:

-(BOOL)isAppUpdated
{
NSDictionary *bundleInfo = [[NSBundle mainBundle] infoDictionary];
NSString *currentVersion = [bundleInfo objectForKey:@"CFBundleShortVersionString"];

if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"currentVersion"] isEqualToString:currentVersion])
{
    return NO ;
}
else
{
    [[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:@"currentVersion"];
    return YES ;
}
}


3 commentaires

@Jintendragandhi - Merci pour cet exemple. Je l'ai porté à Swift et l'inclus dans ma réponse attribuant l'original à vous.


@Jintendragandhi Je n'ai pas posé la question, donc je ne peux pas (je ne suis pas activé) l'accepter. Je ne peux que commencer à voter votre réponse (que je vais maintenant). Je n'avais pas besoin de la solution que je n'ai senti seulement que cela profiterait aux utilisateurs Swift de le voir porté à Swift, que je connais assez bien pour le porter de votre code, car c'est une petite fonction simple. Ma réponse a déjà été élue, alors je fais cela comme un service pour les téléspectateurs futurs du fil.


Oups .. Nyways .. Thnxx :)



3
votes

Utiliser nsuserdefault code> pour stocker le cfbundersion code>. Ensuite, vérifiez-le à chaque fois que l'application est lancée.

// Check if new version
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *currentAppVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
if ([defaults objectForKey:@"savedAppVersionKey"] != nil) {
    // Key exists
    NSString *savedAppVersion = [defaults objectForKey:@"savedAppVersionKey"];
    if ([currentAppVersion isEqualToString:savedAppVersion]) {
        // Still running the same app version
        // Do nothing
        NSLog(@"App version: SAME");
    }
    else {
        // The app version changed from the last launch
        // Do something here
        NSLog(@"App version: UPDATED");
    }
}
// Set the key & synchronize
[defaults setObject:currentAppVersion forKey:@"savedAppVersionKey"];


0 commentaires

1
votes

Le code suivant ne reviendra aucun / oui. Vous pouvez appeler cette méthode plusieurs fois pour savoir si l'application a été mise à jour avant ce lancement ou non. xxx


0 commentaires