تشخیص اولین اجرای اپ با Xamarin Essential


در دنیای برنامه نویسی موبایل نیاز میشه که در هنگام لانچ شدن اپ بتونیم یک قطعه کد را فقط یکبار اجرا کنیم یا در واقع یک قطعه کد فقط در اولین اجرای اپ شناسایی و اجرا بشه!

اپلیکیشنی رو در نظر بگیرید که در در هنگام اولین اجرا یک راهنما از نحوه کارکردن با اپ به کاربر نشون داده میشه و می دونید که با اجرای دوم اپ دیگه اون راهنما به کاربر نشون داده نمیشه. اگه بخواهید که وقتی کاربر واسه اولین بار اپ شما رو اجرا کرد بهش خوش آمد گویی بگید بازهم می تونه این راه حل خوبی باشه. اما چه جوری می تونید اینکارو انجام بدید؟  چه جوری باید تشخیص بدیم که این اولین باری هست که اپ اجرا شده !!!

شناسایی اولین اجرا با Preferences

یک راه حل می تونه استفاده از قابلیت توکار (Built-in ) اندروید یعنیPreferences باشه.

قابلیت Preferences به ما اجازه میده تا داده ها را با فرمت Key/Value (کلید/مقدار) ذخیره و نگهداری کنیم که این اطلاعات نیز با فرمت xml ذخیره می شوند. (حتما یادم باشه که در مورد Preferences  یک مقاله تهیه کنم البته مقاله هایی از دیگر دوستان هست می تونید مطالعه بفرمائید البته من دوست دارم مقاله خودم رو داشته باشم!!!)

پس می تونیم یک کلاس، مثلا با نام Settings با یک property  با نام FirstRun با مقدار اولیه true مانند قطعه کد زیر داشته باشیم.



public static class Settings
{
  public static bool FirstRun
  {
      get =>Preferences.Get(nameof(FirstRun), true);
      set =>Preferences.Set(nameof(FirstRun), value);
  }
}

 

در ادامه در هنگام لانچ شدن اپ مقدار FirstRun رو چک می کنیم که اگر ture بود به این معنی هست که اپ برای اولین بار هست که اجرا شده و بعد میایم مقدار FristRun رو به false تغییر می دهیم.

if(Settings.FirstRun)
{
// Perform an action such as a "Pop-Up".
Settings.FirstRun = false;
} 

به نظر میاد که روش خوبی باشه ولی فرض کنید که نسخه جدید اپ شما Release شده و آماده ارائه به بازارهست!

در این سناریو شما می خواهید که در اولین اجرا بعد از اپدیت اپ قابلیت جدیدی که در این نسخه اضافه نموده اید رو به کاربران نمایش بدهید!!!!. فکر کنم موضوع رو متوجه شده باشید.

با قابلیتPreferences   این امکان وجود ندارد چرا که قبلا مقدار FirstRun به false تغییر پیدا کرده است. راه حل بهتر می تونه استفاده از کنترل ورژن باشه.

کنترل ورژن

با استفاده از کنترل ورژن می تونیم چک کنیم که ورژن جدیدی از اپ نصب شده است یا خیر که در این صورت مثلا می تونیم بررسی اگه ورژن خاصی مد نظر هست فلان اتفاق بیفته.

کنترل ورژن اپ با استفاده از version tracking API در Xamarin.Essentials قدرتمند می تونه انجام بشه.

نخست باید که VersionTracking.Track()  در فضای نام Xamarin.Essentials صدا زده بشه.

کدهای زیر دید بهتری رو بهتون میده.



// First time ever launched application 
اگه اپ برای اولین بار اجرا شده باشه مقدار true برمی گردونه //
var firstLaunch =VersionTracking.IsFirstLaunchEver;
 
// First time launching current version
اگه اولین اجرای نسخه جاری باشه مقدار true بر میگردونه //
var firstLaunchCurrent =VersionTracking.IsFirstLaunchForCurrentVersion;
 
// First time launching current build
var firstLaunchBuild =VersionTracking.IsFirstLaunchForCurrentBuild;
 
// Current app version (2.0.0)
نسخه جاری اپ رو بر میگردونه //
var currentVersion =VersionTracking.CurrentVersion;
 
// Current build (2)
var currentBuild = VersionTracking.CurrentBuild;
 
// Previous app version (1.0.0)
var previousVersion =VersionTracking.PreviousVersion;
 
// Previous app build (1)
var previousBuild =VersionTracking.PreviousBuild;
 
// First version of app installed (1.0.0)
var firstVersion =VersionTracking.FirstInstalledVersion;
 
// First build of app installed (1)
var firstBuild =VersionTracking.FirstInstalledBuild;
 
// List of versions installed (1.0.0, 2.0.0)
var versionHistory =VersionTracking.VersionHistory;
 
// List of builds installed (1, 2)
var buildHistory = VersionTracking.BuildHistory;

قطعه کد زیر استفاده از کنترل ورژن رو نشون میده:



if(VersionTracking.IsFirstLaunchEver)
{
// Display pop-up alert for first launch
}
else if(VersionTracking.IsFirstLaunchForCurrentVersion)
{
// Display update notification for current version (1.0.0)
}
else if(VersionTracking.IsFirstLaunchForCurrentBuild)
{ // Display update notification for current build number (2)
}

 


نظرات شما برای ما فوق العاده مهم هستند. لطفا نظر خود را بنویسید.


با نظردهی ما را حمایت کنید:

Captcha