3

내가 이에 대한 답변을 검색 할 때 개발자가 앱의 라이브 타일을 더 자주 업데이트하는 방법을 찾고있었습니다. 나는 반대를 원해. 일종의.Windows Phone 8 맞춤형 시간별 범위 라이브 타일 업데이트 빈도

날씨 앱을 개발 중이며 매 시간마다 업데이트하고 싶지만 특정 시간별로만 업데이트하고 싶습니다. 즉, 1) 사용자가 잠자기 상태이고 2) 사용중인 API가 하루에 처음 1,000 개 통화 만 무료이기 때문에 사용자가 매시간 한 번 타일을 업데이트 할 수있는 권한을 갖고 싶지 않습니다. 즉, 사용자는 매 시간마다 업데이트 할 필요가 없으며 어쨌든 옵션을 제공 할 여력이 없습니다.

예를 들어 라이브 타일을 매시간 오전 8 시부 터 오후 11 시까 지 업데이트하고 오후 12 시부 터 7 시까 지 전화를 걸지 않게 할 수 있습니까?

+3
+0

을 시간 범위를 확인하고 나는이 간접적으로 보면 이미 한 대답했다 같아요 -이 : HTTP ://stackoverflow.com/questions/13560972/updating-live-tiles-for-windows-phone-8-periodically –

답변

0

ScheduledAgent에서 API를 호출하는 경우 호출을 시간을 확인하는 if 블록으로 간단하게 래핑하십시오. 타일을 하루에 한 번 업데이트하는 비슷한 필요성이있었습니다 (Xmas까지 일을 카운트 다운했습니다).

이 코드는 내 ScheduledAgent.cs에 있습니다. 날짜를 확인하고 (12 월과 26 일에 시작해야 함) 카운트 다운을 설정 한 다음 크리스마스 아침에만 토스트 알림을 보냅니다. 그것은 백그라운드 작업에서 dat의 설정 시간에 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(); 
    } 
}