Windows UWP アプリをユーザー通知用のクライアント側 SDK と統合するIntegrate your Windows UWP app with the client-side SDK for user notifications

Azure Portal でアプリを登録してから、パートナー デベロッパー センターでクロスデバイス エクスペリエンスを開始したら、その次の手順として、Windows UWP 対応のクライアント側 SDK をクライアント アプリケーションに統合します。After you register your app in the Azure Portal and onboard your cross-device experiences in the Partner Dev Center, the next step is to integrate your client app with the client-side SDK for Windows UWP apps.

クライアント側 SDK を使用することで、アプリは、アプリケーション サーバーから現在サインインしているユーザーを対象に発行された通知の受信を開始するために必要な登録手順を実行できるようになります。With the client-side SDK, your app can perform the necessary registration steps to start receiving notifications published from your app server targeted at the user who is currently signed in. その後で、この SDK はクライアント側での通知の管理を実行します。これには、新しい着信通知の受信、すべて消去のようなシナリオを実現するための通知状態の管理、および完全な通知履歴の取得が含まれます。The SDK then manages the notifications on the client side, including receiving new incoming notifications, managing the state of notifications to achieve scenarios like universal dismiss, and retrieving full notification history.

新しい着信通知のフローNew incoming notification flow

次の図は、新しい着信通知を受信する際のデータ フローを示しています。For receiving new incoming notifications, the data flow is shown in the following diagram.

Windows アプリの新しい通知のフロー

このプロセスには、いくつかのコンポーネントが関与します。The process involves a few components:

  • アプリケーション サーバー: アプリケーションのバックエンドApp server - The back end of your application
  • アプリケーション クライアント: アプリケーションのフロント エンド (UWP アプリ、Android アプリ、または iOS アプリ)App client - The front end of your application (a UWP app, an Android app, or an iOS app)
  • Microsoft Graph 通知: 複数のデバイスおよびプラットフォームに渡って異なるアプリ クライアントのインスタンス間で、ユーザー通知の発行、保存、および同期を可能にするサービス コンポーネントMicrosoft Graph notifications - The service component that enables user notifications to be published, stored, and synced across different instances of app clients across devices and platforms
  • WNS: クライアントにシグナルを送信するために Microsoft Graph 通知で使用される Windows プッシュ通知サービスWNS - The Windows push notification service that Microsoft Graph notifications uses to signal the clients

この図は、次の手順を示しています。The diagram shows the following steps:

  1. アプリケーションのロジック。Application logic. この手順では、ユーザーに通知を発行するトリガーになるものを取り込みます。This step captures what triggers the notification to be published to the user. これは、アプリケーション固有のロジックであり、Microsoft Graph の別のもの (予定表イベントやタスクの割り当てなど) に関するイベントまたはデータの更新になることも、それとは別にアプリ サービスでユーザーに通知しようとしているものになることもあります。This is app-specific logic, and can be an event or data update about something else in Microsoft Graph, such as a new calendar event or task assignment, or else your app service wants to notify the user about.
  2. アプリケーション サーバーから対象ユーザーへの通知は、Microsoft Graph 通知 API 経由で発行されます。The app server publishes a notification to the targeted user via the Microsoft Graph notifications API. 詳細については、サーバー側との統合を参照してください。For more details, see server side integration.
  3. 新しい通知が含まれている Web 要求を受信すると、Microsoft Graph 通知は、このアプリとユーザーのためにクラウドで通知の内容を安全に保持します。On receiving the web request containing the new notification, Microsoft Graph notifications persists the content of the notification securely in the cloud for this app and this user.
  4. このユーザーの通知を受信するためにサブスクライブしているアプリのクライアント インスタンスごとに、Microsoft Graph 通知は、オペレーティング システムが提供するネイティブのプッシュ サービスによって、アプリのクライアントに通知するためのシグナルを送信します。For each app client instance subscribing to receive notifications for this user, Microsoft Graph notifications sends a signal to notify the app client, via the native push service provided by the operating system. ここでは、このアプリケーションは Windows 上の UWP アプリであり、シグナルの送信には WNS プッシュ直接通知が使用されます。In this case, the application is a UWP app on Windows, and it uses WNS push raw notification to send the signal.
  5. 着信プッシュ通知によるシグナルを受信したアプリケーションは、ユーザー通知ストアでの変更についてフェッチするように SDK に求めます。After the application is signaled by the incoming push notification, it asks the SDK to fetch for the changes in the user notification store.
  6. SDK は、Microsoft Graph 内で、ユーザー通知ストアとの安全で準拠した接続を確立します。The SDK establishes a secure and compliant connection with the user notifications store in Microsoft Graph.
  7. SDK は、データの変更 (この場合は新しい通知の内容) を取得します。The SDK gets the data changes - in this case, the new notification contents.
  8. 変更が正常に取得された後、アプリに通知するためのイベント コールバックが SDK で発生します。The SDK fires event callbacks to notify the app after the changes are successfully retrieved.
  9. アプリケーションのロジック。Application logic. この手順では、アプリがイベント コールバック内で実行する内容を取得します。This step captures what your app chooses to do inside the event callback. 通常、ローカルのアプリ データが変更され、ローカルの UI 更新が発生します。Usually, this results in local app data changes and local UI updates. この場合、通常、アプリは通知内容をユーザーに知らせるトースト通知ポップアップを作成します。In this case, the app usually constructs a toast notification popup to notify the user about the notification contents.

通知の更新フローNotification update flow

Microsoft Graph 通知を使用する主な利点の 1 つは、通知が安全にクラウドで保持され、ステートフル リソース タイプに変更できることです。One of the main benefits for using Microsoft Graph notifications is that it persists notifications in the cloud securely and turns them into a stateful resource type. そのため、アプリケーションはクロスデバイス シナリオにおいて、サインインしている同一のユーザーに対して、異なるデバイス間で通知の正しい状態を管理および同期できます。Therefore, it can help your application to manage and sync the correct state of the notifications across different devices for the same signed in user in a cross-device scenario. あるデバイスで通知が消去または既読になったときには、その他のデバイスにリアルタイムで通知されます。When a notification is marked as dismissed, or marked as read on one device, the other devices can be notified in real-time. "一度処理すれば、すべての場所で消去される" ということが、ユーザーの通知体験の一部として実現されます。"Handled once, dismissed everywhere" can become a true promise as part of the notification experience for your users.

次の図は、あるデバイスで通知状態の変更や通知の削除があり、その状態の変更や削除を別のデバイスで受信/処理する場合のデータ フローを示しています。The following diagram shows the data flow for changing the state of a notification or deleting the notification on one device, and receiving/handling the state change or the deletion on another device.

Windows アプリの更新通知のフロー

このフローの 2 番目の部分は、新しい着信通知の処理のフローと似ています。Notice that the second part of the flow is similar to the flow for handling new incoming notifications. これは仕様によるものです。SDK のプログラミング パターンでは、あらゆる種類のユーザー通知データの変更 (新規に受信した通知、通知状態の変更、通知の削除など) をアプリケーション クライアントが同じような方法で処理できるように設計されています。This is by design - the programming pattern of the SDK is designed so that the application client can handle all types of user notification data changes (new incoming notifications, notification state changes, notification deleted) in a similar way.

この図は、次の手順を示しています。The diagram shows the following steps:

  1. アプリケーションのロジック。Application logic. 何らかのものが、通知の変更または削除をトリガーします。Something triggers the notification to be changed or deleted. 一般に、あらゆるイベントが通知を変更するトリガーになり得ます。In general, any event can trigger a notification to change.
  2. 通知を更新または削除するクライアント SDK のアプリによる呼び出し。App calling into the client SDK to update or delete a notification. 現在、状態の変更に関して 2 つのプロパティ (userActionState および readState) が公開されていますが、こうした状態とその状態の更新時期はアプリケーションで定義できます。Currently, we expose two properties regarding state changes - userActionState and readState - but your application can define these states and when they need to be updated. たとえば、ユーザーが通知ポップアップを消去したときには、userActionState が消去済み (Dismissed) になるように更新します。For example, when a user dismisses the notification popup, you can update the userActionState to be Dismissed. ユーザーが通知ポップアップをクリックして、それに対応するアプリのコンテンツを利用するアプリを起動したときに、userActionState をアクティブ化済み (Activated) に更新し、readState を読み取り (Read) に更新します。When a user clicks the notification popup and launches the app to consume corresponding app content, you can update the userActionState to be Activated and update the readState to be Read.
  3. 通知を更新または削除するために対応する API が呼び出された後、SDK は、クラウド内のユーザー通知ストアに送信して、この変更をサインインしている同一ユーザーの別のアプリクライアント インスタンスに展開します。After the corresponding API is called to update or delete a notification, the SDK will call into the user notification store in the cloud in order to fan-out this change to the other app client instances with the same signed in user.
  4. クライアントから更新/削除要求を受信した Microsoft Graph 通知は、通知ストアを更新して、この変更をサブスクライブしている別のアプリ クライアント インスタンスを特定します。On receiving the update/delete request from a client, Microsoft Graph notifications will update the notification store, and identify the other app client instances that subscribed to this change.
  5. アプリ クライアントのサブスクリプションごとに、Microsoft Graph 通知は、アプリ クライアントに通知するシグナルを送信します。このとき、オペレーティング システムによって提供されるネイティブ プッシュ サービスが使用されます。For each app client subscription, Microsoft Graph notifications sends a signal to notify the app client, via the native push service provided by the operating system. ここでは、このアプリが Windows 上の UWP アプリであるため、シグナルの送信には WNS プッシュ直接通知が使用されます。In this case, this is a UWP app on Windows, and it uses WNS push raw notification to send the signal.
  6. 着信プッシュ通知によるシグナルを受信したアプリケーションは、ユーザー通知ストアでの変更についてフェッチするように SDK に求めます。After the application is signaled by the incoming push notification, it asks the SDK to fetch for the changes in the user notification store.
  7. SDK は、Microsoft Graph 内で、ユーザー通知ストアとの安全で準拠した接続を確立します。The SDK establishes a secure and compliant connection with the user notifications store in Microsoft Graph.
  8. SDK によってデータが変更されます。ここでは、変更内容は通知状態の更新または通知の削除です。The SDK gets the data changes - in this case, the changes are notification state updates or notification deletions.
  9. 変更が正常に取得された後、アプリに通知するためのイベント コールバックが SDK で発生します。The SDK fires event callbacks to notify the app after the changes are successfully retrieved.
  10. アプリケーションのロジック。Application logic. この手順では、アプリがイベント コールバック内で実行する内容を取得します。This step captures what your app chooses to do inside the event callback. 通常、ローカルのアプリ データが変更され、ローカルの UI 更新が発生します。Usually, this results in local app data changes and local UI updates. ここでは、通知の更新があるため、アプリはローカルに UI を更新して状態の変更を反映させる必要があります。In this case, because there are notification updates, the app should update the UI locally to reflect the state change. たとえば、通知にアクティブ化済みのマークが付いている場合は、Windows アクション センター内で対応するトースト通知ポップアップを削除することで、"一度処理すれば、すべての場所で消去" を実現できます。For example, if a notification is marked as activated, you can remove the corresponding toast notification popup inside Windows action center to achieve "handled once, dismissed everywhere".

Microsoft Graph 通知の詳細については、 Microsoft Graph 通知の概要を参照してください。For more information about Microsoft Graph notifications, see Microsoft Graph Notifications overview. Microsoft Graph 通知と統合するために必要なすべての手順の詳細については、Microsoft Graph 通知の統合の概要を参照してください。For more information about the steps required to integrate with Microsoft Graph notifications from end to end, see Microsoft Graph notifications integration overview.

プロジェクトに SDK を追加するAdding the SDK to your project

Windows の場合、このクライアント側 SDK は Windows オペレーティング システムに付属していない NuGet パッケージです。On Windows, the client-side SDK is a NuGet package that ships outside of the Windows operating system. この API は C#、C++、および WinJS で利用できます。This API is available in C#, C++, and WinJS.

Windows アプリ用 Microsoft Graph 通知 SDK に対応する NuGet パッケージを nuget からダウンロードします。または、Visual Studio で次の手順を使用して、アプリ ソリューションからパッケージをダウンロードします。Download the NuGet package for the Microsoft Graph notifications SDK for Windows apps on nuget, or use the following steps to download it from your app solution in Visual Studio:

Visual Studio で、プロジェクトを右クリックしてコンテキスト メニューを表示し、[NuGet パッケージの管理] をクリックします。In Visual Studio, right-click the project to bring up the context menu, and then click Manage NuGet Packages….

NuGet パッケージの管理

[ブラウザー] タブに移動して、Microsoft.ConnectedDevices.UserNotifications を検索します。Go to the Browse tab, and search for Microsoft.ConnectedDevices.UserNotifications.

NuGet パッケージの検索

検索結果に、Microsoft Graph 通知のクライアント側 SDK が表示されます。You will see the Microsoft Graph notifications client-side SDK in the search results. [インストール] ボタンをクリックして、インストールします。Click the Install button to install it.

NuGet パッケージのインストール

インストールの完了後、このパッケージがソリューション エクスプローラーの [参照設定] に表示されます。After the installation finishes, the package shows up under References in the Solution Explorer.

UWP アプリからの NuGet パッケージの組み込みと利用に関する詳細については、次を参照してください。For more details about including and consuming NuGet packages from your UWP app, see:

Connected Device Platforms の初期化Initializing the Connected Device Platforms

クライアント側 SDK は、Connected Device Platforms と呼ばれるインフラストラクチャの上に構築されています。The client-side SDK is built on top of an infrastructure called Connected Device Platform. どの機能を使用するにしても、まず、このプラットフォームをアプリで初期化する必要があります。Before you can use any features, the platform must be initialized within your app. この初期化手順は、通知シナリオの実行前に必要になるため、メイン クラスの OnLaunched メソッドまたは onActivated メソッドに配置する必要があります。The initialization steps should occur in your main class OnLaunched or onActivated method, because they are required before the notification scenarios can take place.

このプラットフォームの構築と初期化のために、ConnectedDevicesPlatform クラスをインスタンス化する必要があります。You must construct and initialize the platform by instantiating the ConnectedDevicesPlatform class. その前に、次に示すようにイベント ハンドラーがフックされていることを確認してください。これは、プラットフォームの起動後に、イベントがトリガーされる可能性があるためです。Before doing that, make sure to hook up event handlers, as shown, because after platform is started, the events might begin to fire.

var platform = new ConnectedDevicesPlatform();
platform.AccountManager.AccessTokenRequested += AccountManager_AccessTokenRequestedAsync;
platform.AccountManager.AccessTokenInvalidated += AccountManager_AccessTokenInvalidated;
platform.NotificationRegistrationManager.NotificationRegistrationStateChanged += NotificationRegistrationManager_NotificationRegistrationStateChanged;
platform.Start();

アカウント アクセス トークンの処理Handling account access token

新しい着信通知のコンテンツの取得、通知状態の更新など、SDK で実行されるすべての Web 呼び出しは、ユーザーのデータに対する読み取りと書き込みになるため、常に有効なアクセス トークンが必要になります。All the web calls the SDK makes, including retrieving the content of a new incoming notification, updating notification states, and more, are reading from or writing to the user's data, and therefore always require a valid access token. この SDK は、次のイベント (アクセス トークンが要求されたとき、または無効化されたときに起動されるイベント) の処理を必要とします。これにより、プラットフォームの初期化後に、ユーザーのアクセス トークンが正常に処理されるようにします。The SDK requires you to handle the following events - invoked when an access token is requested or invalidated - to make sure that after the platform is initialized, your access token for the user is handled correctly.

AccountManager_AccessTokenRequestedAsyncAccountManager_AccessTokenRequestedAsync

完全な実装については、Windows アプリのサンプルを参照してください。For a full implementation, see the Windows app sample.

private async void AccountManager_AccessTokenRequestedAsync(ConnectedDevicesAccountManager sender, ConnectedDevicesAccessTokenRequestedEventArgs args)
{
    private List<Account> accounts = new List<Account>();
    var account = accounts.Find((x) => x.EqualsTo(args.Request.Account));
    if (account != null)
    {
        try
        {
            var accessToken = await account.GetAccessTokenAsync(args.Request.Scopes);
            args.Request.CompleteWithAccessToken(accessToken);
        }
        catch (Exception ex)
        {
            args.Request.CompleteWithErrorMessage(ex.Message);
        }
    }
}

AccountManager_AccessTokenInvalidatedAccountManager_AccessTokenInvalidated

完全な実装については、Windows アプリのサンプルを参照してください。For a full implementation, see the Windows app sample.

private void AccountManager_AccessTokenInvalidated(ConnectedDevicesAccountManager sender, ConnectedDevicesAccessTokenInvalidatedEventArgs args)
{
    Logger.Instance.LogMessage($"Token Invalidated. AccountId: {args.Account.Id}, AccountType: {args.Account.Id}, scopes: {string.Join(" ", args.Scopes)}");
}

プッシュ登録の有効期限を処理するHandling push registration expiration

Microsoft Graph 通知では、Windows のネイティブ プッシュ プラットフォームである WNS を使用して、ユーザー通知データの変更時にクライアント アプリケーションにシグナルを送信します。Microsoft Graph notifications uses WNS, the native push platform on Windows, to signal the client application on user notifications data changes. これは、新しい着信通知がアプリ サーバーから発行されたときや、クロスデバイス シナリオでサインインしている同一ユーザーの別のデバイスで通知状態が更新されたときに発生します。This happens when new incoming notifications are published from your app server, or when any notification's state is updated on a different device with the same signed in user in a cross-device scenario.

そのため、直接プッシュ通知を正常に伝達できる有効な WNS チャネルが必要になります。For this reason, a valid WNS channel that allows raw push notifications to come through successfully is required. 次のイベント コールバックでは、WNS プッシュ チャネルの有効期限切れを処理ます。The following event callback handles WNS push channel expirations.

NotificationRegistrationManager_NotificationRegistrationStateChangedNotificationRegistrationManager_NotificationRegistrationStateChanged

完全な実装については、Windows アプリのサンプルを参照してください。For a full implementation, see the Windows app sample.

private async void NotificationRegistrationManager_NotificationRegistrationStateChanged(ConnectedDevicesNotificationRegistrationManager sender, ConnectedDevicesNotificationRegistrationStateChangedEventArgs args)
{
    if ((args.State == ConnectedDevicesNotificationRegistrationState.Expired) || (args.State == ConnectedDevicesNotificationRegistrationState.Expiring))
    {
        var account = m_accounts.Find((x) => x.EqualsTo(args.Account));
        if (account != null)
        {
            await account.RegisterAccountWithSdkAsync();
        }
    }
}

ユーザーをサインインするSigning in your user

Microsoft Graph通知は、その他の Microsoft Graph の多くのリソース タイプと同様に、ユーザーが中心になります。Microsoft Graph notifications, like many other resource types inside Microsoft Graph, are centralized around users. サインインしているユーザーの通知にアプリでサブスクライブして受信を開始するには、まず、登録プロセスで使用する有効な OAuth トークンを取得する必要があります。In order for your app to subscribe to and start receiving notifications for the signed in user, you first need to obtain a valid OAuth token to be used in the registration process. OAuth トークンの生成方法と管理方法、は適切なものを選択できます。You can use your preferred method of generating and managing the OAuth tokens. サンプル アプリでは ADAL を使用します。The sample app uses ADAL.

Microsoft アカウントを使用している場合は、サインイン要求に次のアクセス許可を含める必要があります: wl.offline_access"ccs.ReadWritewns.connectasimovrome.telemetry、および https://activity.windows.com/UserActivity.ReadWrite.CreatedByAppIf you're using a Microsoft account, you will need to include the following permissions in your sign-in request: wl.offline_access", ccs.ReadWrite, wns.connect, asimovrome.telemetry, and https://activity.windows.com/UserActivity.ReadWrite.CreatedByApp.

Azure AD アカウントを使用している場合は、次の対象ユーザーを要求する必要があります: https://cdpcs.access.microsoft.comIf you're using an Azure AD account, you'll need to request the following audience: https://cdpcs.access.microsoft.com.

プラットフォームにユーザー アカウントを追加するAdding the user account to the platform

サインインしているユーザーのアカウントを SDK に登録する必要があります。You need to register the signed in user account with the SDK. これには、アカウントの追加と、WNS を通じた初期通知を受信するプッシュ チャネルの登録が伴われます。This involves adding the account and registering a push channel to receive the initial push notifications through WNS.

var account = new ConnectedDevicesAccount(accountId, accountType);           
var addResult = await platform.AccountManager.AddAccountAsync(account);
if (addResult.Status != ConnectedDevicesAccountAddedStatus.Success)
{
    throw new Exception("Add account failed with " + addResult.Status + "!");
}            

var pushChannel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
ConnectedDevicesNotificationRegistration registration = new ConnectedDevicesNotificationRegistration();
registration.Type = ConnectedDevicesNotificationType.WNS;
registration.Token = pushChannel.Uri;
var registerResult = await platform.NotificationRegistrationManager.RegisterAsync(account, registration);
if (registerResult.Status != ConnectedDevicesNotificationRegistrationStatus.Success)
{
    throw new Exception("Register push channel failed with " + registerResult.Status + "!");
}

ユーザーの通知を受信するためのサブスクライブSubscribing to receive user's notifications

このサインインしているユーザーのアプリケーション用に、UserDataFeed オブジェクトをインスタンス化する必要があります。You need to instantiate a UserDataFeed object for your application for this signed in user. アプリケーションは、クロスデバイス エクスペリエンスの開始時に指定したクロスプラットフォーム アプリ ID によって識別されます。Your application is identified by the cross-platform app ID you provided during the Cross-Device Experiences onboarding process.

UserDataFeed feed = UserDataFeed.GetForAccount(account, platform, "YOUR_HOST_HERE");

var scopes = new List<UserDataFeedSyncScope> { UserNotificationChannel.SyncScope };
var subscribeResult = await feed.SubscribeToSyncScopesAsync(scopes);
if (!subscribeResult)
{
    throw new Exception("Subsribe failed!");
}
var channel = new UserNotificationChannel(feed);
var reader = channel.CreateReader();
reader.DataChanged += Reader_DataChanged;

ユーザー通知を受信および管理するReceiving and managing user notifications

このトピックの前半のフロー図では、アプリ サーバーからの新しい着信通知や、別のアプリケーション クライアント インスタンスで開始された通知の更新または削除を処理するためのプログラミング パターンを示しました。The flow diagram earlier in this topic shows that the programming patterns to handle a new incoming notifications from an app server and a notification update or deletion initiated from another app client instance are similar. このようなデータの変更を処理する手順は次のとおりです。The following are the steps for handling these data changes.

着信プッシュ通知シグナルの処理Handling incoming push notification signal

すべての種類のユーザー通知データの変更について、アプリ クライアントにプッシュ通知として配信されるシグナルが生成されます。All types of user notification data changes generate a signal that gets delivered to the app clients as a push notification. Windows UWP アプリの場合、このシグナルは WNS プッシュ直接通知として配信されます。For Windows UWP apps, the signal is delivered as a WNS push raw notification. 直接プッシュ シグナルの受信時に、アプリでは、TryParse を呼び出すことで、Microsoft Graph 通知サービスから実際のデータの変更についてフェッチする SDK をトリガーする必要があります。On receiving the raw push signal, the app should call TryParse to trigger the SDK to fetch from the Microsoft Graph notifications service for the actual data changes.

public async Task ReceiveNotificationAsync(string content)
{
    ConnectedDevicesNotification notification = ConnectedDevicesNotification.TryParse(content);
    if (notification != null)
    {
        await platform.ProcessNotificationAsync(notification);
    }
}

ユーザー通知のデータ変更の処理Handling user notification data changes

SDK によってデータ変更が正常にフェッチされると、イベント コールバックが呼び出され、アプリ クライアントによる通知の作成、更新、または削除の処理が求められます。After the SDK successfully fetches the data changes, an event callback is invoked and the app client is expected to handle notification creation, update, or deletion.

private async void Reader_DataChanged(UserNotificationReader reader, object args)
{
    var notifications = await reader.ReadBatchAsync(UInt32.MaxValue);

    foreach (var notification in notifications)
    {
        // Handle notification changes based on change type;
    }
}

通知の更新状態Update state of a notification

このアプリ クライアントのインスタンスから通知状態の変更が開始された場合 (たとえば、このデバイスのトースト通知ポップアップをユーザーが有効化した場合)、アプリでは、この状態の変更を同じユーザーが使用するすべてのデバイスで同期するために、SDK を呼び出して通知の状態を更新する必要があります。If a notification state change is initiated from this app client instance (for example, if the toast notification popup on this device is activated by the user), the app needs to call the SDK to update the notification's state in order to have this state change synced across all devices used by the same user.

notification.UserActionState = UserNotificationUserActionState.Activated;
await notification.SaveAsync();

通知を削除するDelete a notification

このアプリ クライアントのインスタンスから通知の削除が開始された場合 (たとえば、この通知に対応するタスクに完了のマークが付けられ、アプリのデータベースから通知が削除された場合)、アプリでは、この削除の操作を同じユーザーが使用するすべてのデバイスで同期するために、SDK を呼び出して通知を削除する必要があります。If a notification deletion is initiated from this app client instance (for example, if the task corresponding to this notification is marked as complete and is removed from your app's database), the app needs to call the SDK to delete the notification in order to have this delete operation synced across all devices used by the same user.

通知は、有効期限が切れているか、明示的に削除された場合にのみ、ユーザー通知ストアから削除されます。A notification is removed from the user notification store only if it is expired or explicitly deleted. UserActionState のセマンティック定義はアプリケーション自体によって定義されているため、UserActionState が消去済み (Dismissed) になるように更新しても、ユーザー通知は削除されません。A user notification is not deleted when you update the UserActionState to be Dismissed, because the semantic definition of UserActionState is defined by the application itself.

await channel.DeleteUserNotificationAsync(notification.Id);

関連項目See also