سؤال

أود أن أعرف ما إذا كان هناك علامة "تشغيل أولي" أو ما شابه في WP7. يأخذ تطبيقي بعض الأشياء من التخزين المعزول ، لذا أود تحديد ما إذا كان هذا ضروريًا لأول مرة. أنا أستخدم حاليًا إذا للتحقق مما إذا كان كائن التخزين المسماة موجودًا ، لكن هذا يعني أنه لا يمكنني التعامل مع أي أخطاء فقدان الذاكرة بالطريقة التي أريدها.

هل كانت مفيدة؟

المحلول

لا أعتقد أن هناك ميزة مدمجة لهذا ... لكنني أعرف ما تعنيه :-) لقد قمت بتطبيق "First Run" بنفسي باستخدام ISO Storage في المصدر المفتوح أكاديمية خان لتطبيق Windows Phone. كل ما أقوم به هو النظر في تخزين ISO لملف صغير جدًا (أنا فقط أكتب بايت واحد إليه) ... إذا لم يكن هناك ، فهذه هي المرة الأولى ، إذا كان هناك ، فقد تم تشغيل التطبيق أكثر من مرة. لا تتردد في التحقق من المصدر وأخذ تنفيذي إذا كنت ترغب في :-)

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

نصائح أخرى

كما اقترح Henryc في تعليق على الإجابة المقبولة ، استخدمت arsidatedstoragesettings لتنفيذ "سلوك التشغيل الأول" ، إليك الرمز:

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

في بعض الأحيان ، نحتاج إلى تنفيذ بعض الإجراءات على كل تحديث من متجر Windows إذا كان هناك تغيير في الإصدار. ضع هذا الرمز في 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);

        }

    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top