Пользовательский часовой диапазон Windows Phone 8 Частота обновления Live Tile

Когда я искал ответ на этот вопрос, я сталкивался только с разработчиками, которые все чаще и чаще искали способы обновлять живые плитки своих приложений. Я хочу наоборот, т.

Видите ли, я разрабатываю погодное приложение и хочу, чтобы оно обновлялось каждый час, но только для определенного часового диапазона. То есть я не хочу, чтобы у пользователя была возможность обновлять плитку раз в час, потому что 1) люди спят и 2) API, который я использую, бесплатен только для первых 1000 вызовов в день. Другими словами, пользователям не нужно обновлять его каждый час, и я не могу позволить им сделать это в любом случае.

Так можно ли, например, заставить живую плитку обновляться каждый час с 8:00 до 23:00 и не звонить с 12:00 до 7:00?


comment
В вашем методе проверьте временной диапазон, и если он не во временном диапазоне, не выполняйте расчеты и т.д.   -  person csharpwinphonexaml    schedule 25.04.2014
comment
Я думаю, что на этот вопрос уже косвенно ответили, взгляните на это: живые плитки для Windows Phone 8 периодически "> stackoverflow.com/questions/13560972/   -  person Brendon Bezuidenhout    schedule 14.05.2014


Ответы (1)


Если вы делаете вызов API в своем ScheduledAgent, просто оберните вызов в блок if, который проверяет время. У меня была похожая потребность обновлять плитку раз в день (был обратный отсчет дней до Рождества).

Этот код находится в моем файле ScheduledAgent.cs. Он проверяет дату (должен срабатывать только в декабре и до 26 числа) и устанавливает обратный отсчет, а затем отправляет тост-уведомление только в рождественское утро. Это должен быть хороший пример того, как ограничить вызовы API установленным временем в вашей фоновой задаче.

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();
    }
}
person Adam Benoit    schedule 05.11.2014