情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

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 を使用すると、タイルの背景イメージを 1 回だけ、または繰り返し更新するスケジュールを設定できます。スケジュールは、アプリがアクティブではない場合でも実行し続けます。また、ShellTileSchedule を使用して、アプリに対して実行されているスケジュールを停止することもできます。スケジュール内の障害により、アプリが動作していないときでもスケジュールが取り消される可能性があるので、アプリでは、ShellTileSchedule の設定を保存しておき、アプリが起動するたびにスケジュールを開始する必要があります。

ShellTileSchedule サンプルは、次の対応するアクションを開始する 4 つのボタンがあるシンプルなプログラムです。

  • タイルを 1 回だけ更新します。

  • スケジュールを作成し、タイルを無期限に更新します。

  • スケジュールを作成し、タイルを特定の回数だけ更新します。

  • 実行しているスケジュールを停止します。

AP_Tiles_TileScheduleSample
メモメモ:

タイルをスタート画面に固定して、更新をテストします。

アプリの UI を作成するには

  1. 新しい Windows Phone アプリを作成します。

  2. MainPage.xaml で、次のコードを使用して ContentPanel という名前の Grid を置き換えます。これにより、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. using ディレクティブを MainPage.xaml.cs ファイルの先頭に追加し、ShellTileSchedule を含む名前空間の名前を指定します。

    using Microsoft.Phone.Shell;
    
    
  2. スケジュールと状態の変数を宣言して初期化します。

     
    public partial class MainPage : PhoneApplicationPage
    {
        ShellTileSchedule SampleTileSchedule = new ShellTileSchedule();
        bool TileScheduleRunning = false;
    
    
    
  3. 更新を 1 回だけ行うコードを追加します。

    
    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 時間程度かかることがあります。デバイスがロックされているとユーザーが更新を見ないので、更新は行われません。

アプリを実行してデバッグするには

  1. [デバッグ]、[デバッグ開始] の順にメニュー コマンドを選択してアプリを実行します。

  2. エミュレーターが初期化を行い、プログラムが実行しているときは、エミュレーターの [開始] ボタンを押して、[スタート] 画面に移動します。 アプリ リストに移動して自分のアプリを探します。アプリ名を長押しして、コンテキスト メニューから [スタート画面に追加] を選択します。アプリ タイルがスタート画面に追加されます。

  3. [戻る] ボタンを押してアプリに戻ります。アプリのいずれかのボタンをタップして、スケジュールを開始します。

  4. [スタート] 画面に戻ります。スケジュールが実行されて結果が表示されるのを待ちます。更新はバッチ処理なので、最大 1 時間かかる場合があります。

    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();
}

関連項目

その他の技術情報

表示: