我正在编写一个Windows Phone 8应用程序,我想检查用户是否已经连续3天使用我的应用程序,每天至少一次。如果他们这样做,我会给他/她一个关于礼物的小费。
在这里,我想知道如何检查用户是否连续3天使用我的应用程序(需要每天至少使用一次我的应用程序)。
答案 0 :(得分:2)
将时间存储在应用程序存储中。
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;
}
答案 1 :(得分:1)
每次用户启动应用程序时都会记录当前日期。 (将它添加到存储在保存在独立存储中的文件的列表中可能是最简单的方法。)
然后检查该列表以查看它是否还包括过去两天的条目。如果确实如此,那么您就知道您应该出示提示。
您需要添加适当的逻辑以在适当的情况下从列表中删除旧数据,并且可能不会每天添加多个条目。您可能还想考虑如何在第3天多次打开应用程序,如果您多次显示提示。