チュートリアル: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 に統合するために通知ハブを構成します。

  1. Windows デベロッパー センターに移動し、Microsoft アカウントでサインインしてから、 [新しいアプリの作成] を選択します。

    New app button

  2. アプリの名前を入力し、 [Reserve product name] (製品名を予約) を選択します。 これでアプリの新しい Windows ストア登録が作成されます。

    Store app name

  3. [製品管理] を展開し、[製品 ID] を選択します。 パッケージ SIDパッケージ/ID/名前パッケージ/ID/発行元パッケージ/プロパティ/発行元の表示名の値をメモしておきます。

    Partner center apps

  4. [製品管理] で、[WNS/MPNS] を選択し、[アプリ登録ポータル] を選択します。 Microsoft アカウントにサインインする。 アプリケーション登録ページが新しいタブで開きます。

    WNS page

  5. [必須] で、[クライアント資格情報: 証明書またはシークレットを追加する] を選択します。

    Notification Hub settings on Azure portal

  6. [証明書とシークレット] ページの [クライアント シークレット] で、[新しいクライアント シークレット] を選択します。 クライアント シークレット (アプリケーション シークレットとも呼ばれます) を作成後、ページを離れる前にメモしておきます。

    警告

    クライアント シークレット (アプリケーション シークレット) の値は、作成直後にのみ表示されます。 ページを離れる前にシークレットを保存してください。

    Client secret on portal

    警告

    アプリケーション シークレットおよびパッケージ SID は、重要なセキュリティ資格情報です。 これらの値は、他のユーザーと共有したり、アプリケーションで配信したりしないでください。

通知ハブの作成

  1. Azure portal にサインインします。

  2. 左側のメニューから、 [すべてのサービス] を選択します。 A screenshot showing select All Services for an existing namespace.

  3. [サービスのフィルター] テキスト ボックスに「Notification Hubs」と入力します。 サービス名の横にある星のアイコンを選択して、左側のメニューにある [お気に入り] セクションにサービスを追加します。 [Notification Hubs] を選択します。

    A screenshot showing how to filter for notification hubs.

  4. [Notification Hubs] ページで、ツール バーの [作成] を選択します。

    A screenshot showing how to create a new notification hub.

  5. [Notification Hub] ページの [基本] タブで、次の手順を行います。

    1. [サブスクリプション] で、使用する Azure サブスクリプションの名前を選択し、既存のリソース グループを選択するか、新しいリソース グループを作成します。

    2. [名前空間の詳細] に新しい名前空間の一意の名前を入力します。

    3. 名前空間には 1 つ以上の通知ハブが含まれているので、 [通知ハブの詳細] にそのハブの名前を入力します。

    4. [場所] ドロップダウン リスト ボックスで値を選択します。 この値には、ハブを作成する場所を指定します。

      Screenshot showing notification hub details.

    5. Availability Zones オプションをレビューします。 可用性ゾーンがあるリージョンを選んだ場合は、既定でチェック ボックスが選択されます。 Availability Zones は有料機能であるため、追加料金がレベルに追加されます。

    6. [ディザスター リカバリー] オプションを選びます。[None] (なし)、[Paired recovery region] (ペアの復旧リージョン)、または [Flexible recovery region] (フレキシブル復旧リージョン) のオプションがあります。 Paired recovery region (ペアリングされた復旧リージョン) を選択すると、フェールオーバー リージョンが表示されます。 Flexible recovery region (柔軟な復旧リージョン) を選択した場合は、ドロップダウンを使用して復旧リージョンの一覧から選択します。

      Screenshot showing availability zone details.

    7. [作成] を選択します

  6. デプロイが完了したら、[リソースに移動] を選択します。

WNS の設定をハブ用に構成する

  1. [通知設定] カテゴリで、 [Windows (WNS)] を選択します。

  2. 前のセクションでメモしたパッケージ SID ("ms-app://<Your Package SID>" など) およびセキュリティ キー (アプリケーション シークレット) の値を入力します。

  3. ツール バーの [Save](保存) をクリックします。

    The Package SID and Security Key boxes

これで、通知ハブが WNS と連携するように構成されました。 接続文字列を使用してアプリを登録し、通知を送信できます。

サンプルの Windows アプリを作成する

  1. Visual Studio の [ファイル] メニューを開き、 [新規作成][プロジェクト] の順に選択します。

  2. [新しいプロジェクトの作成] ダイアログで、次の手順に従います。

    1. 上部の検索ボックスに「Windows ユニバーサル」と入力します。

    2. 検索結果で [空白のアプリ (ユニバーサル Windows)] を選択し、 [次へ] を選択します。

      New Project dialog

    3. [新しいプロジェクトの構成] ダイアログで、 [プロジェクト名] を入力し、プロジェクト ファイルの [場所] を入力します。

    4. [作成] を選択します

  3. ターゲット最小プラットフォーム バージョンの既定値を受け入れ、 [OK] を選択します。

  4. ソリューション エクスプローラーで Windows ストア アプリ プロジェクトを右クリックし、 [発行][アプリケーションをストアと関連付ける] の順に選択します。 アプリケーションを Windows ストアと関連付ける ウィザードが表示されます。

  5. ウィザードで、自分の Microsoft アカウントでサインインします。

  6. 手順 2. で登録したアプリを選択し、 [次へ][関連付け] の順に選択します。 この操作により、必要な Windows ストア登録情報がアプリケーション マニフェストに追加されます。

  7. Visual Studio でソリューションを右クリックし、 [NuGet パッケージの管理] を選択します。 [NuGet パッケージの管理] ウィンドウが開きます。

  8. 検索ボックスに「WindowsAzure.Messaging.Managed」と入力し、 [インストール] を選択して、使用条件に同意します。

    The Manage NuGet Packages window

    この操作によって、Microsoft.Azure.NotificationHubs NuGet パッケージを使用して Windows 用 Azure Notification Hubs ライブラリがダウンロード、インストールされ、ライブラリへの参照が追加されます。

  9. App.xaml.cs プロジェクト ファイルを開き、次のステートメントを追加します。

    using Windows.Networking.PushNotifications;
    using Microsoft.WindowsAzure.Messaging;
    using Windows.UI.Popups;
    
  10. プロジェクトの 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 接続文字列に置き換えてください。

  11. App.xaml.cs 内で、OnLaunched イベント ハンドラーの先頭に、次に示す新しい InitNotificationsAsync メソッドの呼び出しを追加します。

    InitNotificationsAsync();
    

    これにより、アプリケーションが起動するたびに必ずチャネル URI が通知ハブに登録されます。

  12. Package.appxmanifest を右クリックし、[コードの表示](F7 キー) を選択します。 <Identity .../> を探し [名前] の値を [パッケージ/ID/名前] に置き換え、[発行元] の値を、前に作成したアプリから [パッケージ/ID/発行元] の値に置き換えます。

  13. アプリを実行するために、キーボードの F5 キーを押します。 登録キーを示すダイアログ ボックスが表示されます。 ダイアログ ボックスを閉じるには、[OK] をクリックします。

    Registration successful

これで、アプリケーションがトースト通知を受信する準備が整いました。

テスト通知を送信する

Azure Portal で通知を送信することで、通知の受信をすばやくテストできます。

  1. Azure Portal で、[概要] タブに切り替えてから、ツールバーの [テスト送信] を選択します。

    Test Send button

  2. [テスト送信] ウィンドウで、次のアクションを実行します。

    1. [プラットフォーム] として、[Windows] を選択します。

    2. 通知の種類 として、[トースト] を選択します。

    3. [Send] を選択します。

      The Test Send pane

  3. ウィンドウの一番下の [結果] 一覧で、[送信] 操作の結果を確認します。 アラート メッセージも表示されます。

    Result of Send operation

  4. 通知メッセージが表示されます。デスクトップ上のテスト メッセージ

    Notification message

次のステップ

ポータルまたはコンソール アプリを使用して、すべての Windows デバイスにブロードキャスト通知を送信しました。 特定のデバイスにプッシュ通知を送信する方法を学習するには、次のチュートリアルに進んでください。