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

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

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

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

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();
    }
}
Другие вопросы по тегам