アプリ通知の進行状況バーとデータ バインディング

アプリ通知内で進行状況バーを使用すると、ダウンロード、ビデオ レンダリング、演習の目標など、実行時間の長い操作の状態をユーザーに伝えます。

アプリ通知内の進行状況バーは、"不確定" (特定の値なし、アニメーション化されたドットは操作が発生中であることを示します) または "確定" (60%など、バーの特定の割合が塗りつぶされます) のいずれかです。

次の図は、すべての関連プロパティがラベル付けされた進捗バーを示しています。

アプリ通知の詳細については、「アプリ通知 の概要」を参照してください。

進行状況バーのプロパティにラベルが付いたアプリ通知
財産 タイプ 必須 説明
タイトル string または BindableString false 省略可能なタイトル文字列を取得または設定します。 データ バインディングをサポートします。
価値 double または AdaptiveProgressBarValue または BindableProgressBarValue false 進行状況バーの値を取得または設定します。 データ バインディングをサポートします。 既定値は 0 です。 0.0から1.0までの範囲の double、AdaptiveProgressBarValue.Indeterminate、または new BindableProgressBarValue("myProgressValue") のいずれかを指定できます。
ValueStringOverride string または BindableString false 既定のパーセンテージ文字列の代わりに表示される省略可能な文字列を取得または設定します。 これが指定されていない場合は、"70%" のようなものが表示されます。
ステータス string または BindableString 真実 左側の進行状況バーの下に表示される状態文字列 (必須) を取得または設定します。 この文字列は、"Downloading..." のような操作の状態を反映している必要があります。または "Installing..."

AppNotificationBuilder.AddProgressBar を使用して、進行状況バーを通知に追加します。 次の例では、上記の通知を生成します。

var builder = new AppNotificationBuilder()
    .AddText("Downloading your weekly playlist...")
    .AddProgressBar(new AppNotificationProgressBar()
        .SetTitle("Weekly playlist")
        .SetValue(0.6)
        .SetValueStringOverride("15/26 songs")
        .SetStatus("Downloading..."));

進行状況バーの値を動的に更新するには、次のセクションで説明するようにデータ バインディングを使用します。

データ バインディングを使用して進行状況バーを更新する

ライブ進行状況バーを表示するには、データ バインディングを使用して、通知全体を再送信せずに通知値を更新します。

  1. Bind メソッドを呼び出して、データ バインド フィールドを含む通知コンテンツを構築します。
  2. 通知を識別するために タグ (および必要に応じて グループ) を割り当てます。
  3. AppNotificationProgressData の初期値を設定します。
  4. AppNotificationManager.Default.Show を呼び出して通知を表示します。
using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;

string tag = "weekly-playlist";
string group = "downloads";

var builder = new AppNotificationBuilder()
    .AddText("Downloading your weekly playlist...")
    .AddProgressBar(new AppNotificationProgressBar()
        .BindTitle()
        .BindValue()
        .BindValueStringOverride()
        .BindStatus());

var notification = builder.BuildNotification();
notification.Tag = tag;
notification.Group = group;

notification.Progress = new AppNotificationProgressData(1)
{
    Title = "Weekly playlist",
    Value = 0.6,
    ValueStringOverride = "15/26 songs",
    Status = "Downloading..."
};

AppNotificationManager.Default.Show(notification);

次に、 AppNotificationManager.Default.UpdateAsync を新しい AppNotificationProgressData インスタンスで呼び出して、進行状況の値を更新します。 これが新しい更新プログラムであることをプラットフォームが認識できるように、シーケンス番号をインクリメントします。

using Microsoft.Windows.AppNotifications;

string tag = "weekly-playlist";
string group = "downloads";

var data = new AppNotificationProgressData(2)
{
    Value = 0.7,
    ValueStringOverride = "18/26 songs"
};

await AppNotificationManager.Default.UpdateAsync(data, tag, group);

通知全体を置き換える代わりに UpdateAsync を使用すると、通知は通知センターの同じ位置にとどまり、上下に移動しません。 このメソッドは、更新が成功したかどうか、または通知が見つからなかったかどうかを示す NotificationUpdateResult を返します (ユーザーが通知を無視した可能性があります)。

データ バインディングをサポートする要素

アプリ通知の次の要素は、データ バインディングをサポートします。

  • AppNotificationProgressBar のすべてのプロパティ
  • 最上位レベルのテキスト要素の Text プロパティ

通知を更新または置換する

同じタググループで新しい通知を送信することで、通知を置き換えることができます。 次の表では、通知の置き換えと更新の違いについて説明します。

置換 更新中
通知センターでの位置 通知センターの上部に通知を移動します。 通知センター内で通知を残します。
コンテンツの変更 通知のすべてのコンテンツとレイアウトを完全に変更できます。 変更できるのは、データ バインディングをサポートするプロパティ (進行状況バーと最上位レベルのテキスト) のみです。
ポップアップとして再表示される SuppressPopupfalseされている場合はポップアップとして再表示できます (または、通知センターに自動的に送信するためにtrueに設定されます)。 ポップアップとして再表示されません。通知のデータは通知センター内で自動的に更新されます。
ユーザーが解除された 置換通知は、ユーザーが前の通知を無視したかどうかに関係なく、常に送信されます。 ユーザーが通知を無視した場合、更新は失敗します。

一般に、 更新 は頻繁に変更され、進行状況が 50% から 65%に変更されるなど、ユーザーの即時の注意を必要としない情報に役立ちます。

一連の更新が完了した後 (たとえば、ファイルのダウンロードが完了した場合)、次の理由から、最後の手順の通知を 置き換えることを 検討してください。

  • 最終的な通知には、進行状況バーの削除や新しいボタンの追加など、レイアウトが異なる可能性があります。
  • ユーザーは進行状況の通知を閉じた可能性がありますが、操作が完了したときにポップアップを表示したいと考えています。

こちらも参照ください