Пользовательский почасовой диапазон обновлений 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();
}
}