このチュートリアルでは、ユニバーサル Windows プラットフォーム (UWP) アプリにプッシュ通知を送信する通知ハブを作成します。 Windows プッシュ通知サービス (WNS) を使用して、プッシュ通知を受信する空の Windows ストア アプリを作成します。 次に、通知ハブを使用して、アプリを実行しているすべてのデバイスにプッシュ通知をブロードキャストします。
注
このチュートリアルの完全なコードは GitHub にあります。
次の手順を実行します。
- Windows ストアでアプリを作成する
- 通知ハブを作成する
- サンプル Windows アプリを作成する
- テスト通知を送信する
[前提条件]
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料の Azure アカウントを作成してください。
- Microsoft Visual Studio 2017 以降。 このチュートリアルの例では 、Visual Studio 2019 を使用します。
- UWP アプリ開発ツールがインストールされています。
- アクティブな Windows ストア アカウント。
-
アプリやその他の送信者からの通知を取得する設定が有効になっていることを確認します。
- コンピューターの [設定] ウィンドウを起動します。
- [システム] タイルを選択します。
- 左側のメニューから [通知とアクション ] を選択します。
- [ アプリやその他の送信者からの通知を取得する ] 設定が有効になっていることを確認します。 有効になっていない場合は、有効にします。
このチュートリアルを完了することは、UWP アプリの他のすべての Notification Hubs チュートリアルの前提条件です。
Windows ストアでアプリを作成する
注
Microsoft プッシュ通知サービス (MPNS) は非推奨となり、サポートされなくなりました。
UWP アプリにプッシュ通知を送信するには、アプリを Windows ストアに関連付けます。 次に、WNS と統合するように通知ハブを構成します。
Windows デベロッパー センターに移動し、Microsoft アカウントでサインインし、[新しいアプリの作成] を選択します。
アプリの名前を入力し、[ 製品名の予約] を選択します。 これにより、アプリの新しい Windows ストア登録が作成されます。
[ 製品管理] を展開し、[ 製品 ID] を選択します。 Package SID、Package/Identity/Name、Package/Identity/Publisher、およびPackage/Properties/PublisherDisplayNameの値を書き留めます。
[ 製品管理] で [ WNS/MPNS] を選択し、[ アプリ登録ポータル] を選択します。 Microsoft アカウントにサインインします。 アプリケーション登録ページが新しいタブで開きます。
[ 要点] で、[ クライアント資格情報: 証明書またはシークレットの追加] を選択します。
[ 証明書とシークレット ] ページの [ クライアント シークレット] で、[ 新しいクライアント シークレット] を選択します。 クライアント シークレット (アプリケーション シークレットとも呼ばれます) を作成したら、ページを離れる前にメモしておきます。
警告
クライアント シークレット (アプリケーション シークレット) の値は、作成直後にのみ表示できます。 ページを離れる前に、必ずシークレットを保存してください。
警告
アプリケーション シークレットとパッケージ SID は、重要なセキュリティ資格情報です。 これらの値を他のユーザーと共有したり、アプリに配布したりしないでください。
通知ハブを作成する
Azure portal にサインインします。
左側のメニューから、 [すべてのサービス] を選択します。
[サービスのフィルター] テキスト ボックスに「Notification Hubs」と入力します。 サービス名の横にある星のアイコンを選択して、左側のメニューにある [お気に入り] セクションにサービスを追加します。 [Notification Hubs] を選択します。
[Notification Hubs] ページで、ツール バーの [作成] を選択します。
[Notification Hub] ページの [基本] タブで、次の手順を行います。
[サブスクリプション] で、使用する Azure サブスクリプションの名前を選択し、既存のリソース グループを選択するか、新しいリソース グループを作成します。
[名前空間の詳細] に新しい名前空間の一意の名前を入力します。
名前空間には 1 つ以上の通知ハブが含まれているので、 [通知ハブの詳細] にそのハブの名前を入力します。
[場所] ドロップダウン リスト ボックスで値を選択します。 この値には、ハブを作成する場所を指定します。
Availability Zones オプションをレビューします。 可用性ゾーンがあるリージョンを選んだ場合は、既定でチェック ボックスが選択されます。 Availability Zones は有料機能であるため、追加料金がレベルに追加されます。
[ディザスター リカバリー] オプションを選びます。[None] (なし)、[Paired recovery region] (ペアの復旧リージョン)、または [Flexible recovery region] (フレキシブル復旧リージョン) のオプションがあります。 Paired recovery region (ペアリングされた復旧リージョン) を選択すると、フェールオーバー リージョンが表示されます。 Flexible recovery region (柔軟な復旧リージョン) を選択した場合は、ドロップダウンを使用して復旧リージョンの一覧から選択します。
を選択してを作成します。
デプロイが完了したら、[リソースに移動] を選択します。
ハブの WNS 設定を構成する
[ 通知設定] カテゴリで、[ Windows (WNS)] を選択します。
前のセクションで説明した パッケージ SID ("ms-app://
<Your Package SID>
" など) と セキュリティ キー ( アプリケーション シークレット) の値を入力します。ツール バーの [保存] をクリックします。
これで、通知ハブが WNS と連携するように構成されました。 アプリを登録して通知を送信するための接続文字列があります。
サンプル Windows アプリを作成する
Visual Studio の [ファイル] メニューを開き、 [新規作成] 、 [プロジェクト] の順に選択します。
[ 新しいプロジェクトの作成 ] ダイアログで、次の手順を実行します。
上部の検索ボックスに「 Windows ユニバーサル」と入力します。
検索結果で空のアプリ (ユニバーサル Windows)を選択し、次に次へを選択します。
[新しいプロジェクトの
[ 新しいプロジェクトの構成 ] ダイアログで、 プロジェクト名とプロジェクト ファイルの 場所 を入力します。
を選択してを作成します。
ターゲットバージョンと最小プラットフォームバージョンの既定値をそのまま使用し、[OK] を選択します。
ソリューション エクスプローラーで、Windows ストア アプリ プロジェクトを右クリックし、[ 発行] を選択し、[ アプリをストアに関連付ける] を選択します。 [ アプリを Windows ストアに関連付ける ] ウィザードが表示されます。
ウィザードで、Microsoft アカウントでサインインします。
手順 2 で登録したアプリを選択し、[ 次へ] を選択し、[ 関連付け] を選択します。 これにより、必要な Windows ストア登録情報がアプリケーション マニフェストに追加されます。
Visual Studio でソリューションを右クリックし、[ NuGet パッケージの管理] を選択します。 [ NuGet パッケージの管理] ウィンドウが開きます。
検索ボックスに「 WindowsAzure.Messaging.Managed」と入力し、[ インストール] を選択し、使用条件に同意します。
このアクションでは、 Microsoft.Azure.NotificationHubs NuGet パッケージを使用して、Windows 用 Azure Notification Hubs ライブラリへの参照をダウンロード、インストール、および追加します。
App.xaml.cs
プロジェクト ファイルを開き、次のステートメントを追加します。using Windows.Networking.PushNotifications; using Microsoft.WindowsAzure.Messaging; using Windows.UI.Popups;
プロジェクトの
App.xaml.cs
ファイルで、App
クラスを見つけて、次のInitNotificationsAsync
メソッド定義を追加します。<your hub name>
を Azure portal で作成した通知ハブの名前に置き換え、<Your DefaultListenSharedAccessSignature connection string>
を通知ハブの [DefaultListenSharedAccessSignature
] ページの接続文字列に置き換えます。private async void InitNotificationsAsync() { var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); var hub = new NotificationHub("<your hub name>", "<Your DefaultListenSharedAccessSignature connection string>"); var result = await hub.RegisterNativeAsync(channel.Uri); // Displays the registration ID so you know it was successful if (result.RegistrationId != null) { var dialog = new MessageDialog("Registration successful: " + result.RegistrationId); dialog.Commands.Add(new UICommand("OK")); await dialog.ShowAsync(); } }
このコードは、WNS からアプリのチャネル URI を取得し、そのチャネル URI を通知ハブに登録します。
注
hub name
プレースホルダーを、Azure portal に表示される通知ハブの名前に置き換えます。 また、接続文字列プレースホルダーを、前のセクションの通知ハブのDefaultListenSharedAccessSignature
] ページから取得した接続文字列に置き換えます。OnLaunched
のApp.xaml.cs
イベント ハンドラーの上部に、新しいInitNotificationsAsync
メソッドに次の呼び出しを追加します。InitNotificationsAsync();
このアクションにより、アプリケーションが起動するたびにチャネル URI が通知ハブに登録されます。
Package.appxmanifest
を右クリックし、[コードの表示] (F7) を選択します。<Identity .../>
を見つけて、名前の値を Package/Identity/Name に置き換え、その発行元の値を、前に作成したアプリの Package/Identity/Publisher の値に置き換えます。アプリを実行するには、キーボードの F5 キーを押します。 登録キーを含むダイアログ ボックスが表示されます。 ダイアログを閉じるには、[ OK] をクリックします。
これで、アプリでトースト通知を受信する準備ができました。
テスト通知を送信する
Azure portal で通知を送信することで、アプリでの通知の受信をすばやくテストできます。
Azure portal で [概要] タブに切り替え、ツール バーの [テスト送信 ] を選択します。
[ テスト送信 ] ウィンドウで、次の操作を行います。
[プラットフォーム] で、[Windows] を選択します。
[ 通知の種類] で、[ トースト] を選択します。
[Send] を選択します。
ウィンドウの下部にある結果の一覧で、送信操作の 結果 を確認します。 アラート メッセージも表示されます。
通知メッセージが表示されます。テスト メッセージ がデスクトップに表示されます。
次のステップ
Azure portal またはコンソール アプリを使用して、すべての Windows デバイスにブロードキャスト通知を送信しました。 特定のデバイスにプッシュ通知を送信する方法を学習するには、次のチュートリアルに進んでください。