정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8의 예약된 로컬 타일 업데이트를 보내는 방법

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

이 항목에서는 ShellTileSchedule을 사용하여 앱 타일의 배경 이미지를 업데이트할 때 수행할 단계에 대해 설명합니다. ShellTileSchedule은 보조 타일을 업데이트하는 데도 사용할 수 있습니다. 타일에 대한 자세한 내용은 Windows Phone 8의 타일을 참조하세요. 전체 셸 타일 일정 샘플을 다운로드할 수도 있습니다.

팁팁:

타일 앞면의 배경 이미지는 ShellTileSchedule을 사용하여 업데이트할 수 있는 유일한 속성입니다.

이 항목에는 다음 단원이 포함되어 있습니다.

ShellTileSchedule을 사용하여 타일의 배경 이미지를 업데이트하는 일회성 일정 또는 반복 일정을 설정할 수 있습니다. 이 일정은 앱이 활성 상태가 아니더라도 계속 실행됩니다. 또한 ShellTileSchedule은 앱에 대해 실행되는 일정을 중지하는 데도 사용할 수 있습니다. 앱은 ShellTileSchedule에 대한 설정을 저장하고 앱이 시작될 때마다 일정을 시작해야 합니다. 일정에 오류가 발생하면 앱이 더 이상 실행되고 있지 않더라도 일정을 취소할 수 있기 때문입니다.

ShellTileSchedule 샘플은 4개의 버튼이 있는 간단한 프로그램으로, 다음의 해당 작업을 시작합니다.

  • 타일을 한 번 업데이트합니다.

  • 타일을 무한정 업데이트하는 일정을 만듭니다.

  • 타일을 특정 횟수만큼 업데이트하는 일정을 만듭니다.

  • 실행 중인 일정을 중지합니다.

AP_Tiles_TileScheduleSample
참고참고:

업데이트를 테스트하려면 타일을 시작 화면에 고정합니다.

앱 UI를 만들려면

  1. 새 Windows Phone 앱을 만듭니다.

  2. MainPage.xaml에서 이름이 ContentPanel를 다음 코드로 바꿉니다. UI용의 버튼 4개가 만들어집니다.

            <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
                <Button Content="Start One Time Schedule" Height="72" HorizontalAlignment="Center" Margin="38,42,38,0" Name="buttonOneTime" VerticalAlignment="Top" Width="400" Click="buttonOneTime_Click" />
                <Button Content="Start Indefinite Schedule" Height="72" HorizontalAlignment="Center"  Margin="38,120,38,0" Name="buttonIndefinite" VerticalAlignment="Top" Width="400" Click="buttonIndefinite_Click" />
                <Button Content="Start Defined Count Schedule" Height="72" HorizontalAlignment="Center"  Margin="38,198,38,0" Name="buttonDefined" VerticalAlignment="Top" Width="400"  Click="buttonDefined_Click"/>
                <Button Content="Stop Schedule" Height="72" HorizontalAlignment="Center" Margin="38,276,38,0" Name="buttonStop" VerticalAlignment="Top" Width="400" Click="buttonStop_Click" />
            </Grid>
    
    

타일 일정을 만들려면

  1. MainPage.xaml.cs 파일의 맨 위에 using 지시문을 추가하고 ShellTileSchedule을 포함하는 네임스페이스의 이름을 입력합니다.

    using Microsoft.Phone.Shell;
    
    
  2. 일정 및 상태에 대한 변수를 선언하고 초기화합니다.

     
    public partial class MainPage : PhoneApplicationPage
    {
        ShellTileSchedule SampleTileSchedule = new ShellTileSchedule();
        bool TileScheduleRunning = false;
    
    
    
  3. 일회성 업데이트용 코드를 추가합니다.

    
    private void buttonOneTime_Click(object sender, RoutedEventArgs e)
    {
        // Update will happen one time.
        SampleTileSchedule.Recurrence = UpdateRecurrence.Onetime;
    
        // Start the update schedule now. 
        SampleTileSchedule.StartTime = DateTime.Now;
    
        SampleTileSchedule.RemoteImageUri = new Uri(@"http://www.weather.gov/forecasts/graphical/images/conus/MaxT1_conus.png");
        SampleTileSchedule.Start();
        TileScheduleRunning = true;
    }
    
    
  4. 무한정 실행되는 일정을 설정할 코드를 추가합니다. 일정이 너무 많이 실패하는 경우에는 취소될 수 있습니다.

    
    private void buttonIndefinite_Click(object sender, RoutedEventArgs e)
    {
        // Updates will happen on a fixed interval. 
        SampleTileSchedule.Recurrence = UpdateRecurrence.Interval;
    
        // Updates will happen every hour.  Because MaxUpdateCount is not set, the schedule will run indefinitely.
        SampleTileSchedule.Interval = UpdateInterval.EveryHour;
    
        SampleTileSchedule.RemoteImageUri = new Uri(@"http://www.weather.gov/forecasts/graphical/images/conus/MaxT1_conus.png");
        SampleTileSchedule.Start();
        TileScheduleRunning = true;
    }
    
    
  5. 일정한 횟수만큼 타일을 업데이트하는 일정을 설정할 코드를 추가합니다. 이 역시 일정이 너무 많이 실패하는 경우에는 취소될 수 있습니다.

    
    private void buttonDefined_Click(object sender, RoutedEventArgs e)
    {
        // Updates will happen on a fixed interval.
        SampleTileSchedule.Recurrence = UpdateRecurrence.Interval;
    
        // Updates will happen every hour.
        SampleTileSchedule.Interval = UpdateInterval.EveryHour;
    
        // Do a maximum of 50 updates and then stop.
        SampleTileSchedule.MaxUpdateCount = 50;
    
        SampleTileSchedule.RemoteImageUri = new Uri(@"http://www.weather.gov/forecasts/graphical/images/conus/MaxT1_conus.png");
        SampleTileSchedule.Start();
        TileScheduleRunning = true;
    }
    
    
  6. 실행 중인 일정을 중지할 코드를 추가합니다. 일정을 시작하여 일정에 첨부합니다.

    
    private void buttonStop_Click(object sender, RoutedEventArgs e)
    {
        // Attach to a shell schedule by starting it.
        if (!TileScheduleRunning)
        {
            buttonIndefinite_Click(sender, e);
        }
    
        SampleTileSchedule.Stop();
        TileScheduleRunning = false;
    }
    
    
    

업데이트 일정을 디버깅하는 것은 쉽지 않습니다. 절전을 위해 업데이트는 일괄 처리되므로 업데이트된 이미지를 확인하려면 한 시간 가량 소요될 수 있습니다. 단말기가 잠겨 있을 때는 사용자가 업데이트를 볼 수 없으므로 업데이트가 수행되지 않습니다.

앱을 실행하고 디버깅하려면

  1. 디버그 | 디버깅 시작 메뉴 명령을 선택하여 앱을 실행합니다.

  2. 에뮬레이터가 초기화되고 프로그램이 실행 중이면 에뮬레이터의 시작 버튼을 눌러 시작 화면으로 이동합니다. 앱 목록으로 이동하여 앱을 찾습니다. 앱 이름을 길게 누르고 상황에 맞는 메뉴에서 시작 화면에 고정을 선택합니다. 앱 타일이 시작 화면에 고정됩니다.

  3. 뒤로 버튼을 눌러 앱으로 돌아갑니다. 앱의 버튼 중 하나를 눌러 일정을 시작합니다.

  4. 시작 화면으로 돌아갑니다. 결과를 보려면 일정이 실행되기를 기다립니다. 업데이트는 일괄 처리되므로 이 작업은 최대 한 시간까지 걸릴 수 있습니다.

    AP_Tiles_TileScheduleResult

이 샘플에는 보조 타일이 없지만 ShellTileSchedule 생성자로 타일 정보를 전달하여 보조 타일에 대한 일정을 설정할 수 있습니다. 다음 코드 예제에서는 기존의 각 타일에 대해 일정을 설정하는 방법을 보여 줍니다.

foreach (ShellTile TileToSchedule in ShellTile.ActiveTiles)
{
    ShellTileSchedule mySchedule = new ShellTileSchedule(TileToSchedule);
    mySchedule.Interval = UpdateInterval.EveryHour;
    mySchedule.Recurrence = UpdateRecurrence.Interval;
    mySchedule.RemoteImageUri = imageURI;
    mySchedule.Start();
}

표시: