ユニバーサル無視
クラウドのアクション センターを利用したユニバーサル無視は、あるデバイスから通知を閉じると、他のデバイスの同じ通知も無視されることを意味します。
重要
Anniversary Update が必要: ユニバーサル 無視を使用するには、SDK 14393 をターゲットとし、ビルド 14393 以降を実行している必要があります。
このシナリオの一般的な例は、予定表のアラームです...両方のデバイスに予定表アプリがあります...電話とデスクトップでリマインダーを受け取ります...デスクトップで [閉じる] をクリックします...ユニバーサル無視のおかげで、あなたの携帯電話のリマインダーも無視されます! ユニバーサル無視を有効にするには、1 行のコードのみが必要です。
このシナリオでは、重要な事実は、 同じアプリが複数のデバイスにインストールつまり、 デバイスが既に通知を受信していることを意味します。 予定表アプリは、通常、Windows PC とスマートフォンの両方に同じ予定表アプリがインストールされており、アプリの各インスタンスから各デバイスにリマインダーが既に送信されるため、象徴的な例です。 ユニバーサル無視のサポートを追加することで、同じリマインダーのインスタンスをデバイス間でリンクできます。
ユニバーサル無視を有効にする方法
開発者は、ユニバーサル 無視を有効にすることは非常に簡単です。 ユーザーが 1 つのデバイスからの通知を閉じると、対応するリンクされた通知が他のデバイスから無視されるように、デバイス間で各通知をリンクできるようにする ID を指定するだけです。
RemoteId: デバイス間 通知を一意に識別する識別子。
では、RemoteId を追加するためのコード行が 1 行しか取得されないため、ユニバーサル無視のサポートが有効になります。 RemoteId の生成方法はユーザーが行う必要があります。ただし、デバイス間で通知を一意に識別し、異なるデバイスで実行されているアプリの異なるインスタンスから同じ識別子を生成できることを確認する必要があります。
たとえば、宿題プランナー アプリで RemoteId を生成し、それが "reminder" 型であると言い、オンライン アカウント ID と宿題アイテムのオンライン識別子を含めます。 これらのオンラインIDはデバイス間で共有されるため、どのデバイスが通知を送信しているかに関係なく、まったく同じ RemoteId を一貫して生成できます。
var toast = new ScheduledToastNotification(content.GetXml(), startTime);
// If the RemoteId property is present
if (ApiInformation.IsPropertyPresent(typeof(ScheduledToastNotification).FullName, nameof(ScheduledToastNotification.RemoteId)))
{
// Assign the RemoteId to add support for Universal Dismiss
toast.RemoteId = $"reminder_{account.AccountId}_{homework.Identifier}"
}
ToastNotificationManager.CreateToastNotifier().AddToSchedule(toast);
次のコードは、電話アプリとデスクトップ アプリの両方で実行されます。つまり、両方のデバイスの通知の RemoteId が同じになります。
これで必要な操作はこれで済むのです。 ユーザーが通知を無視 (またはクリック) すると、その通知に RemoteId があるかどうかを確認します。存在する場合は、すべてのユーザーのデバイスでその RemoteId の無視がファンアウトされます。
既知の問題: ToastNotificationHistory.GetHistory()
API を使用して RemoteId を取得すると、指定したRemoteIdではなく、常に空の文字列が返されます。 心配しないでください。すべてが機能しています。壊れている値のみを取得しています。
Note
ユーザーまたは企業がアプリの 通知ミラーリング を無効にした (または通知ミラーリングを完全に無効にする) 場合、ユニバーサル 無視はクラウドに通知がないため機能しません。
サポートされているデバイス
Anniversary Update 以降、ユニバーサル 無視は Windows Mobile と Windows Desktop でサポートされています。 ユニバーサル 無視は、PC-PC、PC-Phone、Phone-Phone の間で双方向に機能します。
Windows developer