Windows Phone 8アプリケーションを作成していますが、ユーザーがアプリを3日間、少なくとも1日1回継続して使用しているかどうかを確認したいと思います。もしそうなら、私は彼/彼女にプレゼントについてのヒントを与えます。
ここで、ユーザーが私のアプリを3日間継続して使用したかどうかを確認する方法を知りたいです(少なくとも1日に1回はアプリを使用する必要があります)。
Windows Phone 8アプリケーションを作成していますが、ユーザーがアプリを3日間、少なくとも1日1回継続して使用しているかどうかを確認したいと思います。もしそうなら、私は彼/彼女にプレゼントについてのヒントを与えます。
ここで、ユーザーが私のアプリを3日間継続して使用したかどうかを確認する方法を知りたいです(少なくとも1日に1回はアプリを使用する必要があります)。
時間をアプリケーション ストレージに保存します。
http://www.jeffblankenburg.com/2010/10/15/31-days-of-windows-phone-day-15-isolated-storage/
更新: これにより 4 U:
private void Application_Launching(object sender, LaunchingEventArgs e) {
EnsureCheckThreeDaysInARow();
}
private void Application_Activated(object sender, ActivatedEventArgs e) {
EnsureCheckThreeDaysInARow();
}
public bool EnsureCheckThreeDays() {
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
if (settings.Contains("threeMagicalDay"))
{
var data = new List<DateTime>();
if (data.Count() >= 3 && !data.Any(a => a.Date == DateTime.Now.Date))
data.Remove(data.Min());
data.Add(DateTime.Now);
var someTransform = data.OrderByDescending(a => a).Select(b => new Tuple<int,int,int>(b.Year,b.Month, b.Day)).Aggregate((c,d) => new Tuple<int,int,int>(c.Item1 - d.Item1, c.Item2 - d.Item2, c.Item3 - d.Item3));
if (someTransform.Item1 == -DateTime.Now.Date.Year && someTransform.Item2 == -DateTime.Now.Date.Month && someTransform.Item3 == 0)
{
//There you go...
}
else
{
//Handle it...
}
settings["threeMagicalDay"] = data;
}
else
settings.Add("threeMagicalDay", new List<DateTime>(){DateTime.Now});
return false;
}
ユーザーがアプリを起動するたびに、現在の日付が記録されます。(分離ストレージに保持するファイルに保存するリストに追加するのが、おそらくこれを行う最も簡単な方法です。)
次に、そのリストをチェックして、過去 2 日間のエントリも含まれているかどうかを確認します。表示されている場合は、ヒントを表示する必要がある状況にあることがわかります。
必要に応じて、リストから古いデータを削除する適切なロジックを追加する必要があります。おそらく、1 日に複数のエントリを追加しないでください。また、3 日目にアプリを複数回開いた場合や、ヒントを複数回表示した場合の対処方法も検討する必要があります。