チュートリアル:Azure Notification Hubs を使用してユニバーサル Windows プラットフォーム アプリに通知を送信する
このチュートリアルでは、ユニバーサル Windows プラットフォーム (UWP) アプリにプッシュ通知を送信するための通知ハブを作成します。 Windows プッシュ通知サービス (WNS) を使用してプッシュ通知を受信する空の Windows ストア アプリを作成します。 その後、通知ハブを使用して、アプリを実行しているすべてのデバイスにプッシュ通知をブロードキャストします。
注意
このチュートリアルの完成したコードについては、GitHub を参照してください。
次の手順を実行します。
- Windows ストアでアプリを作成する
- 通知ハブを作成する
- サンプルの Windows アプリを作成する
- テスト通知を送信する
前提条件
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料の Azure アカウントを作成してください。
- Microsoft Visual Studio 2017 以降。 このチュートリアルの例では、Visual Studio 2019 を使用します。
- UWP アプリ開発ツールがインストールされている
- アクティブな Windows ストア アカウント
- [アプリやその他の送信者からの通知を取得する ] 設定が有効になっていること。
- お使いのコンピューターの [設定] ウィンドウを起動します。
- [システム] タイルを選択します。
- 左側のメニューから [通知とアクション] を選択します。
- [アプリやその他の送信者からの通知を取得する ] 設定が有効になっていることを確認します。 有効になっていない場合は有効にしてください。
このチュートリアルを完了することは、UWP アプリに関する他のすべての Notification Hubs チュートリアルを行うための前提条件になっています。
Windows ストアでアプリを作成する
Note
Microsoft プッシュ通知サービス (MPNS) は非推奨となり、サポートされなくなりました。
UWP アプリにプッシュ通知を送信するには、アプリを Windows ストアに関連付けます。 次に、WNS に統合するために通知ハブを構成します。
Windows デベロッパー センターに移動し、Microsoft アカウントでサインインしてから、 [新しいアプリの作成] を選択します。
アプリの名前を入力し、 [Reserve product name] (製品名を予約) を選択します。 これでアプリの新しい Windows ストア登録が作成されます。
[製品管理] を展開し、[製品 ID] を選択します。 パッケージ SID、 パッケージ/ID/名前、 パッケージ/ID/発行元、 パッケージ/プロパティ/発行元の表示名の値をメモしておきます。
[製品管理] で、[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>
" など) およびセキュリティ キー (アプリケーション シークレット) の値を入力します。ツール バーの [Save](保存) をクリックします。
これで、通知ハブが 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
接続文字列に置き換えてください。App.xaml.cs
内で、OnLaunched
イベント ハンドラーの先頭に、次に示す新しいInitNotificationsAsync
メソッドの呼び出しを追加します。InitNotificationsAsync();
これにより、アプリケーションが起動するたびに必ずチャネル URI が通知ハブに登録されます。
Package.appxmanifest
を右クリックし、[コードの表示](F7 キー) を選択します。<Identity .../>
を探し [名前] の値を [パッケージ/ID/名前] に置き換え、[発行元] の値を、前に作成したアプリから [パッケージ/ID/発行元] の値に置き換えます。アプリを実行するために、キーボードの F5 キーを押します。 登録キーを示すダイアログ ボックスが表示されます。 ダイアログ ボックスを閉じるには、[OK] をクリックします。
これで、アプリケーションがトースト通知を受信する準備が整いました。
テスト通知を送信する
Azure Portal で通知を送信することで、通知の受信をすばやくテストできます。
Azure Portal で、[概要] タブに切り替えてから、ツールバーの [テスト送信] を選択します。
[テスト送信] ウィンドウで、次のアクションを実行します。
[プラットフォーム] として、[Windows] を選択します。
通知の種類 として、[トースト] を選択します。
[Send] を選択します。
ウィンドウの一番下の [結果] 一覧で、[送信] 操作の結果を確認します。 アラート メッセージも表示されます。
通知メッセージが表示されます。デスクトップ上のテスト メッセージ。
次のステップ
ポータルまたはコンソール アプリを使用して、すべての Windows デバイスにブロードキャスト通知を送信しました。 特定のデバイスにプッシュ通知を送信する方法を学習するには、次のチュートリアルに進んでください。