Question

Je voudrais savoir s'il y a un drapeau « premier run » ou similaire à WP7. Mon application prend des choses de stockage isolé, donc je voudrais savoir si cela est nécessaire première fois. J'utilise actuellement si pour vérifier si l'objet de stockage nommé existe, mais cela signifie que je ne peux pas gérer les erreurs de perte de mémoire dans la façon dont je voudrais.

Était-ce utile?

La solution

Je ne pense pas qu'il y ait un construit en fonction pour cela ... mais je sais ce que tu veux dire :-) J'implemented « premier run » me iso en utilisant le stockage dans l'open source khan académie pour windows phone app . Tout ce que je fais est de regarder dans l'ISO pour le stockage d'un fichier très petit (je viens d'écrire un octet à elle) ... si ce n'est pas là, il est la première fois, si elle est là, l'application a été exécuté plus d'une fois. Ne hésitez pas à consulter la source et prendre ma mise en œuvre si vous souhaitez: -)

    private static bool hasSeenIntro;

    /// <summary>Will return false only the first time a user ever runs this.
    /// Everytime thereafter, a placeholder file will have been written to disk
    /// and will trigger a value of true.</summary>
    public static bool HasUserSeenIntro()
    {
        if (hasSeenIntro) return true;

        using (var store = IsolatedStorageFile.GetUserStoreForApplication())
        {
            if (!store.FileExists(LandingBitFileName))
            {
                // just write a placeholder file one byte long so we know they've landed before
                using (var stream = store.OpenFile(LandingBitFileName, FileMode.Create))
                {
                    stream.Write(new byte[] { 1 }, 0, 1);
                }
                return false;
            }

            hasSeenIntro = true;
            return true;
        }
    }

Autres conseils

Comme @HenryC suggéré dans un commentaire sur la réponse acceptée, je l'ai utilisé IsolatedStorageSettings pour mettre en œuvre un « comportement First Run », voici le code:

    private static string FIRST_RUN_FLAG = "FIRST_RUN_FLAG";
    private static IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

    public bool IsFirstRun()
    {
        if (!settings.Contains(FIRST_RUN_FLAG))
        {
            settings.Add(FIRST_RUN_FLAG, false);
            return true;
        }
        else
        {
            return false;
        }
    }

Parfois, nous devons effectuer une action sur chaque mise à jour du magasin Windows s'il y a changement de version. Mettez ce code dans votre App.xaml.cs

    private static string FIRST_RUN_FLAG = "FIRST_RUN_FLAG";
    private static IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

   private static string _CurrentVersion;

    public static string CurrentVersion
    {
        get
        {
            if (_CurrentVersion == null)
            {
                var versionAttribute = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyFileVersionAttribute), true).FirstOrDefault() as AssemblyFileVersionAttribute;
                if (versionAttribute != null)
                {
                    _CurrentVersion = versionAttribute.Version;
                }
                else _CurrentVersion = "";
            }

            return _CurrentVersion;

        }

    }

    public static void OnFirstUpdate(Action<String> action)
    {
        if (!settings.Contains(FIRST_RUN_FLAG))
        {
            settings.Add(FIRST_RUN_FLAG, CurrentVersion);
            action(CurrentVersion);
        }
        else if (((string)settings[FIRST_RUN_FLAG]) != CurrentVersion) //It Exits But Version do not match
        {  
            settings[FIRST_RUN_FLAG] = CurrentVersion;
            action(CurrentVersion);

        }

    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top