3

当我在寻找这个问题的答案时,我只遇到开发人员正在寻找越来越频繁地更新他们的应用程序的动态磁贴的方法。我想要相反的,有点。

请参阅我正在开发一个天气应用程序,我希望它每小时更新一次,但仅限于特定的每小时范围。也就是说,我不希望用户能够每小时更新一次磁贴,因为 1) 人们睡觉和 2) 我使用的 API 仅对每天前 1,000 次调用免费。换句话说,用户不需要每小时更新一次,我也不能让他们选择。

例如,是否有可能让实时磁贴从上午 8 点到晚上 11 点每小时更新一次,并且从下午 12 点到早上 7 点不打任何电话?

4

1 回答 1

0

如果您在 中调用 API ScheduledAgent,只需将调用包装在一个检查时间的 if 块中。我有类似的需要每天更新一次磁贴(它正在倒计时直到圣诞节)。

此代码在我的ScheduledAgent.cs文件中。它检查日期(应仅在 12 月和 26 日之前触发)并设置倒计时,然后仅在圣诞节早上发送 toast 通知。它应该是一个很好的例子,说明如何在后台任务中将 API 调用限制为设定的 dat 时间。

if (DateTime.Now.Month == 12 && DateTime.Now.Day < 26)
{
    //number of days until the 25th
    var countdown = ((new DateTime(DateTime.Now.Year, 12, 25).DayOfYear) - DateTime.Now.DayOfYear);

    if (secondaryTile != null)
    {
        var imageString = "/Images/Tiles/" + countdown + ".png";
        var newTileData = new StandardTileData
        {
            BackgroundImage = new Uri(imageString, UriKind.Relative)
        };
        secondaryTile.Update(newTileData);
    }

    var now = DateTime.Now;
    if (now.Day == 25 && now.TimeOfDay.Hours == 9 && (now.TimeOfDay.Minutes > 14 && now.TimeOfDay.Minutes < 46))
    {
        var toast = new ShellToast { Title = "Xmas Countdown", Content = "Merry Xmas! Thank you for using 'Quick Xmas List' and have a safe holiday!" };
        toast.Show();
    }
}
于 2014-11-05T19:20:40.180 回答