ユニバーサル無視Universal Dismiss

ユニバーサル無視は、クラウド環境にあるアクション センターによって提供され、1 つのデバイスで通知を無視すると、他のデバイス上の同じ通知が併せて無視される機能です。Universal Dismiss, powered by Action Center in the Cloud, means that when you dismiss a notification from one device, the same notification on your other devices is also dismissed.

重要

Anniversary Update が必要です:SDK 14393 を対象にして、14393 以上ユニバーサル無視を使用するビルドを実行します。Requires Anniversary Update: You must target SDK 14393 and be running build 14393 or higher to use Universal Dismiss.

このシナリオの一般的な例に、カレンダーのリマインダーがあります。電話とデスクトップの両方にカレンダー アプリがインストールされていて、両方のデバイスでリマインダーを受け取った場合、デスクトップで無視のボタンをクリックすれば、ユニバーサル無視の機能により、電話のリマインダーも併せて無視されます。The common example of this scenario is calendar reminders... you have a calendar app on both of your devices... you get a reminder on your phone and desktop... you click dismiss on your desktop... thanks to Universal Dismiss, the reminder on your phone is also dismissed! ユニバーサルの消去を有効にすると、1 行のコードだけが必要です。Enabling Universal Dismiss only requires one line of code!

Diagram of Universal Dismiss

このシナリオの重要なポイントは、複数のデバイスに同じアプリがインストールされていること、つまり、既に両方のデバイスが通知を受信する状態にあることです。In this scenario, the key fact is that the same app is installed on multiple devices, meaning that each device is already receiving notifications. カレンダー アプリはこの代表的な例です。通常、カレンダー アプリは、Windows PC と電話の両方にインストールされ、アプリのそれぞれのインスタンスが既にそれそれのデバイスにリマインダーを送信しています。A calendar app is the iconic example, since you typically have the same calendar app installed on both your Windows PC and your phone, and each instance of the app already sends you reminders on each device. ユニバーサル無視のサポートを追加すると、同じリマインダーの複数のインスタンスをデバイス間でリンクできます。By adding support for Universal Dismiss, those instances of the same reminders can be linked across devices.

ユニバーサル無視を有効にする方法How to enable Universal Dismiss

開発者にとって、ユニバーサル無視を有効にする手順は非常に簡単です。As a developer, enabling Universal Dismiss is extremely easy. 必要なのは、デバイス間で通知をリンクできるように ID を指定することだけです。これにより、ユーザーが 1 つのデバイスで通知を無視すると、それに対応するリンクされた通知が他のデバイスで無視されます。You simply need to provide an ID that allows us to link each notification across devices, so that when the user dismisses a notification from one device, the corresponding linked notification is dismissed from the other device.

ユニバーサル無視の RemoteId の図

RemoteId:通知を一意に識別する識別子デバイス間でします。RemoteId: An identifier that uniquely identifies a notification across devices.

RemoteId は、コードに 1 行追加するだけで設定でき、それによってユニバーサル無視のサポートが有効になります。t only takes one line of code to add RemoteId, enabling support for Universal Dismiss! RemoteId の生成方法は開発者が自由に決定できますが、複数のデバイス間で通知を一意に識別でき、かつ異なるデバイス上で動作する同じアプリの異なるインスタンスで、同一の識別子を生成できる必要があります。How you generate your RemoteId is up to you - however, you need to make sure that it uniquely identifies your notification across devices, and that the same identifier can be generated from different instances of your app running on different devices.

たとえば、宿題プランナー アプリについて有効にする場合を考えてみましょう。まず、種類が "reminder" であることを指定して RemoteId を生成した後、宿題項目のオンライン アカウント ID とオンライン識別子を設定します。For example, in my homework planner app, I generate my RemoteId by saying that it is of type "reminder", and then I include the online account ID and the online identifier of the homework item. これらのオンライン ID はデバイス間で共有されているため、通知を送信するデバイスにかかわらず、同じ正確な RemoteId を一貫して生成することができます。I can consistently generate the exact same RemoteId, regardless of which device is sending the notification, since these online IDs are shared across the devices.

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 を持つことになります。The following code runs on both my phone and desktop app, meaning that the notification on both devices will have the same RemoteId.

必要な作業はこれだけです。That's all you have to do! ユーザーが通知を無視 (またはクリック) すると、アプリはそれが RemoteId であるかどうかを確認し、そうである場合は、ユーザーのすべてのデバイスに対してその RemoteId を無視するように情報を拡散します。When the user dismisses (or clicks on) a notification, we'll check if it has a RemoteId, and if so, we'll fan out a dismiss of that RemoteId across all the user's devices.

既知の問題:取得する、 RemoteIdを使用して、ToastNotificationHistory.GetHistory()の API は常に空の文字列を返しますではなく、 RemoteId指定しました。Known Issue: Retrieving the RemoteId via the ToastNotificationHistory.GetHistory() API's will always return empty string rather than the RemoteId you specified. しかし心配は要りません。誤っているのは取得された値のみで、それ以外はすべて正常に機能しています。Don't worry, everything is functional - it's only retrieving the value that's broken.

注意

通知はクラウド上には存在しないため、ユーザーや企業がアプリで通知のミラーリングを無効にすると (または通知のミラーリング自体を完全に無効にすると)、ユニバーサル無視が機能しなくなります。If the user or enterprise disables notification mirroring for your app (or completely disables notification mirroring), then Universal Dismiss will not work, since we do not have your notifications in the cloud.

サポートされるデバイスSupported devices

Anniversary Update 以降、ユニバーサル無視は、Windows Mobile および Windows デスクトップでサポートされます。Since the Anniversary Update, Universal Dismiss is supported on Windows Mobile and Windows Desktop. ユニバーサル無視は、PC 間、PC と電話間、電話間で双方向に機能します。Universal Dismiss works both directions, between PC-PC, PC-Phone, and Phone-Phone.