ターゲット プッシュ通知用のアプリの構成
パートナー センターの [プッシュ通知] のページを使用して、ユニバーサル Windows プラットフォーム (UWP) アプリがインストールされているデバイスにターゲット プッシュ通知を送信することによって、ユーザーとの直接のエンゲージメントを行うことができます。 たとえば、ターゲット プッシュ通知を使用して、ユーザーにアプリの評価や新しい機能の試用などの行動を促すことができます。 トースト通知、タイル通知、生の XML 通知など、さまざまな種類のプッシュ通知を送信できます。 また、プッシュ通知の結果としてのアプリの起動率を追跡することもできます。 この機能について詳しくは、「アプリのユーザーにプッシュ通知を送信する」をご覧ください。
パートナー センターからユーザーにターゲット プッシュ通知を送信する前に、Microsoft Store Services SDK の StoreServicesEngagementManager クラスのメソッドを使用して、通知を受信するアプリを登録する必要があります。 このクラスの追加のメソッドを使用して、ターゲット プッシュ通知の結果としてアプリが起動されたことをパートナー センターに通知したり (通知の結果としてのアプリの起動率をトラッキングする場合)、通知の受信を停止したりすることができます。
プロジェクトを構成する
コードを記述する前に、Microsoft Store Services SDK への参照をプロジェクトに追加するには、以下の手順を実行します。
- Microsoft Store Services SDK を開発用コンピューターにインストールしていない場合には、Microsoft Store Services SDK をインストールします。
- Visual Studio でプロジェクトを開きます。
- ソリューション エクスプローラーで、プロジェクトの [参照設定] ノードを右クリックし、[参照の追加] をクリックします。
- [参照マネージャー] で、[ユニバーサル Windows] を展開し、[拡張機能] をクリックします。
- SDK の一覧で、[Microsoft Engagement Framework] の横にあるチェック ボックスをオンにして、[OK] をクリックします。
プッシュ通知に登録する
ターゲット プッシュ通知を受信するアプリをパートナー センターから登録するには、次の手順を実行します。
プロジェクトで、起動中に実行されるコード セクションを見つけます。このセクションで、通知を受信するようにアプリケーションを登録することができます。
コード ファイルの先頭に、次のステートメントを追加します。
using Microsoft.Services.Store.Engagement;
StoreServicesEngagementManager オブジェクトを取得し、先ほど見つけた起動コードの RegisterNotificationChannelAsync オーバーロードの 1 つを呼び出します。 このメソッドは、アプリを起動するたびに呼び出す必要があります。
パートナー センターで通知の独自のチャネル URI を作成する場合は、RegisterNotificationChannelAsync() オーバーロードを呼び出します。
StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); await engagementManager.RegisterNotificationChannelAsync();
重要
アプリが CreatePushNotificationChannelForApplicationAsync も呼び出して WNS の通知チャネルを作成する場合、コードが CreatePushNotificationChannelForApplicationAsync および RegisterNotificationChannelAsync() オーバーロードを同時に呼び出さないようにしてください・ これらのメソッドの両方を呼び出す必要がある場合は、それらを順番に呼び出すようにして、もう一方のメソッドを呼び出す前に別のメソッドの戻りを待つようにします。
パートナー センターからターゲット プッシュ通知に使用するチャネル URI を指定する場合は、RegisterNotificationChannelAsync(StoreServicesNotificationChannelParameters) オーバーロードを呼び出します。 たとえば、アプリが既に Windows プッシュ通知サービス (WNS) を使用していて、同じチャネル URI を使用する場合は、次のようにします。 まず StoreServicesNotificationChannelParameters オブジェクトを作成し、CustomNotificationChannelUri プロパティをチャネル URI に割り当てる必要があります。
StoreServicesNotificationChannelParameters parameters = new StoreServicesNotificationChannelParameters(); parameters.CustomNotificationChannelUri = "Assign your channel URI here"; StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); await engagementManager.RegisterNotificationChannelAsync(parameters);
注意
RegisterNotificationChannelAsync メソッドを呼び出すと、MicrosoftStoreEngagementSDKId.txt という名前のファイルが、アプリのローカル アプリ データ ストア (ApplicationData.LocalFolder プロパティによって返されるフォルダー) に作成されます。 このファイルには、ターゲット プッシュ通知インフラストラクチャで使用される ID が含まれています。 アプリがこのファイルを変更または削除しないことを確認してください。 ファイルの変更や削除が行われると、通知の複数のインスタンスを受け取ったり、他の方法で通知が正しく動作しない可能性があります。
ターゲット プッシュ通知をユーザーにルーティングする方法
アプリで RegisterNotificationChannelAsync を呼び出すと、このメソッドは、現在デバイスにサインインしているユーザーの Microsoft アカウントを収集します。 その後で、ターゲット プッシュ通知をこのユーザーが含まれているセグメントに送信すると、パートナー センターによって、このユーザーの Microsoft アカウントに関連付けられているデバイスに通知が送信されます。
アプリを起動したユーザーが、Microsoft アカウントでデバイスにまだサインインしているときに、そのデバイスを他のユーザーに使用させた場合、他のユーザーが元のユーザーを対象とした通知を見る可能性があります。 これにより予期しない結果が起こる可能性があります (特に、ユーザーによるサインインが必要となるサービスを提供するアプリの場合)。 このシナリオで他のユーザーがターゲット通知を見ることができなくするには、ユーザーがアプリからからサインアウトするときに、UnregisterNotificationChannelAsync メソッドを呼び出します。 詳しくは、この記事の後半にある「プッシュ通知の登録解除」をご覧ください。
ユーザーがアプリを起動したときのアプリの対応方法
通知を受信するようにアプリを登録し、パートナー センターからアプリのユーザーにプッシュ通知を送信した後に、ユーザーがプッシュ通知の結果としてアプリを起動すると、アプリの次のエントリ ポイントの 1 つが呼び出されます。 ユーザーがアプリを起動したときに実行するコードがある場合は、アプリのこれらのエントリ ポイントのいずれかにコードを追加できます。
プッシュ通知にフォアグラウンドのアクティブ化の種類がある場合には、プロジェクトのアプリクラスの OnActivated メソッドを上書きして、このメソッドにコードを追加します。
プッシュ通知にバックグラウンドのアクティブ化の種類がある場合には、バックグラウンド タスクの Run メソッドにコードを追加します。
たとえば、有料のアドオンを購入したアプリのユーザーに、特典として無料のアドオンを提供することができます。 この例では、対象とするユーザーのユーザー セグメントにプッシュ通知を送信できます。 次に、無料のアプリ内購入を提供するコードを、上記のエントリ ポイントのいずれかに追加できます。
アプリの起動をパートナー センターに通知する
パートナー センターでターゲット プッシュ通知の [Track app launch rate] (アプリの起動率の追跡) オプションを選択した場合は、アプリの適切なエントリ ポイントから ParseArgumentsAndTrackAppLaunch メソッドを呼び出して、プッシュ通知の結果としてアプリが起動されたことをパートナー センターに通知します。
このメソッドは、アプリの元の起動引数を返します。 プッシュ通知によるアプリの起動率を追跡するように選択すると、起動引数に不透明なトラッキング ID が追加され、パートナー センターでのアプリの起動の追跡に役立ちます。 アプリの起動引数を ParseArgumentsAndTrackAppLaunch メソッドに渡す必要があります。このメソッドは、追跡 ID をパートナー センターに送信し、起動引数から追跡 ID を削除して、元の起動引数をコードに返します。
このメソッドを呼び出す方法は、プッシュ通知のアクティブ化の種類によって異なります。
プッシュ通知にフォアグラウンドのアクティブ化の種類がある場合は、このメソッドをアプリの OnActivated メソッド オーバーライドから呼び出し、このメソッドに渡された ToastNotificationActivatedEventArgs オブジェクトで使用可能な引数を渡します。 次のコード例では、コード ファイルに Microsoft.Services.Store.Engagement 名前空間と Windows.ApplicationModel.Activation 名前空間の using ステートメントがあることを前提としています。
protected override void OnActivated(IActivatedEventArgs args) { base.OnActivated(args); if (args is ToastNotificationActivatedEventArgs) { var toastActivationArgs = args as ToastNotificationActivatedEventArgs; StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); string originalArgs = engagementManager.ParseArgumentsAndTrackAppLaunch( toastActivationArgs.Argument); // Use the originalArgs variable to access the original arguments // that were passed to the app. } }
プッシュ通知にバックグラウンドのアクティブ化の種類がある場合、バックグラウンド タスクの Run メソッドからこのメソッドを呼び出し、このメソッドに渡された ToastNotificationActionTriggerDetail オブジェクトで使用可能な引数を渡します。 次のコード例では、コード ファイルに Microsoft.Services.Store.Engagement、Windows.ApplicationModel.Background、Windows.UI.Notifications の名前空間の using ステートメントがあることを前提としています。
public void Run(IBackgroundTaskInstance taskInstance) { var details = taskInstance.TriggerDetails as ToastNotificationActionTriggerDetail; if (details != null) { StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); string originalArgs = engagementManager.ParseArgumentsAndTrackAppLaunch(details.Argument); // Use the originalArgs variable to access the original arguments // that were passed to the app. } }
プッシュ通知の登録解除
アプリでパートナー センターからのターゲット プッシュ通知の受信を停止する場合は、UnregisterNotificationChannelAsync メソッドを呼び出します。
StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault();
await engagementManager.UnregisterNotificationChannelAsync();
このメソッドは通知に使用されているチャネルを無効にするため、アプリはいずれのサービスからもプッシュ通知を受信しなくなることに注意してください。 チャネルが閉じられると、パートナー センターからのターゲット プッシュ通知や WNS を使用したその他の通知を含め、どのサービスにもチャネルを使用することができなくなります。 このアプリでプッシュ通知の送信を再開するには、アプリは新しいチャネルを要求する必要があります。