次の方法で共有


Notification Hubs の概要

Azure Notification Hubs は、任意のバックエンド (クラウドまたはオンプレミス内) から任意のモバイル プラットフォームにモバイル プッシュ通知を送信できるようにするための、使いやすいインフラストラクチャです。

Notification Hubs を使用すると、異なるプラットフォーム通知システム (PNS: Platform Notification System) の詳細を抽象化して、クロスプラットフォームの個人用プッシュ通知を簡単に送信できます。 単一の API 呼び出しで、すべてのデバイスの個々のユーザー、または数百万のユーザーを含むセグメント全体を対象にすることができます。

Notification Hubs は、エンタープライズ向けシナリオとコンシューマー向けシナリオの両方で使用できます。 次に例を示します。

  • 短い待機時間でニュース速報通知を数百万人に送信する (Notification Hubs は、すべての Windows および Windows Phone デバイスにプリインストールされた Bing アプリケーションの機能を強化します)。

  • 場所に基づくクーポンをユーザー セグメントに送信する。

  • イベント通知をスポーツ/金融/ゲーム アプリケーションのユーザーまたはグループに送信する。

  • 新着メッセージ/メールやセールス リードなどのイベントをエンタープライズのユーザーに通知する。

  • 多要素認証に必要なワンタイム パスワードを送信する。

プッシュ通知とは?

スマートフォンやタブレットでは、イベントが発生したことをユーザーに "通知" できます。 Windows ストアおよび Windows Phone アプリケーションでは、通知によりトースト (画面の上部に表示されるモードレス ウィンドウ) が表示されるか、スタート画面にタイルの更新が表示されます。 同様に、Android および Apple iOS デバイスでは、通知は通知パネルにまとめて表示され、画面の上部から簡単にアクセスできます。

プッシュ通知を利用すると、モバイル デバイスでアプリがアクティブになっていないときでも、アプリのバックエンドでデバイスに新しい情報を表示できます。

プッシュ通知は、プラットフォーム通知システム (PNS) と呼ばれるプラットフォーム固有のインフラストラクチャを通じて配信されます。 PNS は、最低限の機能を提供し (ブロードキャストや個人用設定をサポートしません)、プラットフォーム固有の PNS は共通のインターフェイスを備えていません。 たとえば、Windows ストア アプリに通知を送信するには、開発者は WNS (Windows Notification Service) にアクセスする必要があります。 iOS デバイスに通知を送信するには、同じ開発者が APNS (Apple Push Notification Service) にアクセスし、同じメッセージを改めて送信します。 プロセスは Windows Phone 8 および Android アプリの場合と同様です。

大まかな部分では、すべてのプラットフォーム通知システムが同じパターンに従っています。

  1. クライアント アプリケーションは PNS にアクセスして自らのハンドルを取得します。 ハンドルの種類はシステムにより異なります。 WNS の場合は、URI または "通知チャネル" です。APNS の場合、これはトークンです。

  2. クライアント アプリケーションは、このハンドルを後で使用できるように、アプリのバックエンドに格納します。 WNS の場合、バックエンドは通常はクラウド サービスです。 Apple の場合は、プロバイダーと呼ばれるシステムです。

  3. プッシュ通知を送信するために、アプリ バックエンドはハンドルを使用して PNS にアクセスし、特定のクライアント アプリケーションのインスタンスを対象に設定します。

  4. PNS はハンドルで指定されたデバイスに通知を転送します。

Notification Hubs

このフローを実装するために必要なインフラストラクチャは比較的複雑であり、アプリの主要なビジネス ロジックとほとんど関係がありません。 オンデマンド プッシュ インフラストラクチャを構築する際に課題となるのは、次のような点です。

  • プラットフォームへの依存性。 さまざまなプラットフォームのデバイスに通知を送信するには、複数のインターフェイスをバックエンドでコーディングする必要があります。 下位の詳細が異なるだけでなく、通知のプレゼンテーション (タイル、トースト、またはバッジ) もプラットフォームに依存しています。 こうした違いにより、バックエンドのコードが複雑で保守しづらくなります。

  • スケール。 このインフラストラクチャの拡張に関しては、次の 2 つの問題点があります。

    • PNS のガイドラインに従って、アプリが起動するたびにデバイス トークンを更新する必要があります。 それにより、デバイス トークンを最新の状態に保つことだけが目的のトラフィック (および必然的に生じるデータベース アクセス) が大量に発生します。 デバイスの数が増えると (場合によっては数百万台)、このインフラストラクチャを作成して管理するためのコストが大きくなります。

    • ほとんどの PNS では、複数のデバイスへのブロードキャストをサポートしていません。 そのため、数百万台のデバイスにブロードキャストを行うと、PNS への呼び出しが数百万回行われることになります。 これらの要求をスケーリングできることは重要です。通常、アプリ開発者は、全体的な遅延を抑えたいと考えるからです (たとえば、通知を送信してから最後のデバイスが通知を受信するまでに 30 分以上かかっていたのでは、プッシュ通知を実行する目的が損なわれるため、好ましくありません)。

  • ルーティング。 PNS は、デバイスにメッセージを送信する機能を備えています。 しかし、ほとんどのアプリで通知の対象となるのは、ユーザーや関連グループ (たとえば、特定の顧客アカウントに割り当てられているすべての従業員) です。 したがって、通知を適切なデバイスにルーティングするために、アプリ バックエンドで関連グループとデバイス トークンを関連付けるレジストリを維持する必要があります。 このオーバーヘッドにより、アプリケーションの製品化に要する時間と保守費用が増大します。

  • 監視と遠隔測定。 数百万件の通知の結果を追跡して集計することは重要であり、通常はプッシュ通知を使用するソリューションの重要な構成要素です。

Notification Hubs の使用

通知ハブによって、プッシュ通知のチャレンジを管理するという非常に複雑な処理の 1 つが不要になります。 代わりに、通知ハブを使用できます。 Notification Hubs はマルチプラットフォームに完全対応する、スケールアウトされたプッシュ通知インフラストラクチャを使用しており、アプリケーションのバックエンドで実行するプッシュ通知用コードを大幅に減らすことができます。 Notification Hubs は、プッシュ インフラストラクチャのすべての機能を備えています。 次の図に示すように、デバイス側の処理は PNS ハンドルを登録するだけであり、バックエンドによってプラットフォームに依存しないメッセージがユーザーまたは対象グループに送信されます。

Notification Hubs

Notification Hubs は、以下の利点を持つプッシュ インフラストラクチャを提供します。

  • マルチプラットフォーム:

    • すべての主要なモバイル プラットフォーム (Windows/Windows Phone、iOS、Android) のサポート。

    • プラットフォーム固有のプロトコルはありません。 アプリケーションは、Notification Hubs とのみ通信します。

    • デバイス ハンドル管理。 Notification Hubs はハンドル レジストリと PNS からのフィードバックを管理します。

  • 任意のバックエンドとの連携。 クラウドまたはオンプレミスの、.NET、PHP、Java、Node など。

  • スケール。 Notification Hubs では、再構築やシャーディングを行わずに、数百万台のデバイスに対するスケーリングを実行できます。 すべてのリージョンで利用できます。

  • 豊富な一連の配信パターン。 論理ユーザーまたは関連グループを表すタグにデバイスを関連付けます。

    • ブロードキャスト: 単一の API 呼び出しによる数百万台のデバイスに対し、ほぼ同時にブロードキャストを実行できます。

    • ユニキャスト/マルチキャスト: 個別のユーザーと各ユーザーのデバイスを表すタグへのプッシュ。または、別々のフォーム ファクター (タブレットとスマートフォン) などのより広範囲なグループを表すタグへのプッシュ。

    • セグメント化: タグ式によって定義された複雑なセグメント (たとえば、ヤンキースをフォローしているニューヨークのデバイス) へのプッシュ。

  • 個人用設定。 各デバイスに 1 つ以上のテンプレートを設定し、バックエンド コードに影響を与えることなく、デバイスごとのローカライゼーションや個人用設定を適用できます。

  • セキュリティ。 共有アクセス シークレット (SAS) またはフェデレーション認証。

  • 豊富な遠隔測定。 ポータルまたはプログラムで使用可能。

まとめ

  • プッシュ通知は、コンシューマー アプリに対するユーザー エンゲージメントを向上させ、エンタープライズ アプリの有用性を高めるため、昨今のアプリケーションに欠かせない要素になりました。

  • Notification Hubs は、使いやすく、マルチプラットフォームに対応したスケールアウト型のプッシュ インフラストラクチャを提供し、アプリ バックエンド コードの記述と保守を大幅に軽減します。

  • Notification Hubs を使用すると、任意のバックエンド (クラウドまたはオンプレミス) から、すべての主要なモバイル プラットフォーム (Windows/Windows Phone、iOS、Android) にプッシュ通知を送信できます。

その他のリソース

Notification Hubs の機能と特徴

Notification Hubs のチュートリアルとガイド

通知ハブの「はじめに」チュートリアル:

通知ハブに関連する .NET マネージド API の資料はこちらから参照できます。

Microsoft.WindowsAzure.Messaging.NotificationHub

Microsoft.ServiceBus.Notifications