Azure Notification Hubs とはWhat is Azure Notification Hubs?

Azure Notification Hubs は、任意のバックエンド (クラウドまたはオンプレミス) から任意のプラットフォーム (iOS、Android、Windows、Kindle、Baidu など) に通知を送信できる、使いやすく、かつスケールアウトされたプッシュ エンジンを提供します。Azure Notification Hubs provide an easy-to-use and scaled-out push engine that allows you to send notifications to any platform (iOS, Android, Windows, Kindle, Baidu, etc.) from any backend (cloud or on-premises). Notification Hubs は、エンタープライズ向けとコンシューマー向けのどちらのシナリオにも適しています。Notification Hubs works great for both enterprise and consumer scenarios. いくつかのシナリオの例を次に示します。Here are a few example scenarios:

  • ニュース速報の通知を数百万台のデバイスに速やかに送信する。Send breaking news notifications to millions with low latency.
  • 場所に基づいたクーポンを対象のユーザー セグメントに送信する。Send location-based coupons to interested user segments.
  • イベント関連の通知を、メディア/スポーツ/金融/ゲーム アプリケーションのユーザーまたはグループに送信する。Send event-related notifications to users or groups for media/sports/finance/gaming applications.
  • 注意を引いて顧客に販売するために、プロモーション コンテンツをアプリケーションにプッシュする。Push promotional contents to applications to engage and market to customers.
  • 新着メッセージや作業項目などのエンタープライズ イベントをユーザーに通知する。Notify users of enterprise events like new messages and work items.
  • 多要素認証のコードを送信する。Send codes for multi-factor authentication.

プッシュ通知とはWhat are push notifications?

プッシュ通知は、アプリからユーザーへの通信手段の 1 つで、モバイル アプリのユーザーが関心を持っている情報について、モバイル デバイス上のポップアップやダイアログ ボックスなどで通知を受け取ることができる機能です。Push notifications is a form of app-to-user communication where users of mobile apps are notified of certain desired information, usually in a pop-up or dialog box on a mobile device. 通常、ユーザーはメッセージを表示するか無視するかを選択することができます。表示を選択した場合は、その通知を伝えたモバイル アプリケーションが開きます。Users generally choose to view or dismiss the message; choosing the former opens the mobile application that communicated the notification. 一部の通知はサイレントで、アプリがバックグラウンドで処理し、操作を決定するためにバックグラウンドで配信されます。Some notifications are silent - delivered behind the scenes for the app to process behind the scenes and decide what to do.

プッシュ通知は、コンシューマー アプリにとってはアプリの関与や使用率を向上させるために、またエンタープライズ アプリにとっては最新のビジネス情報を通信するために不可欠です。Push notifications are vital for consumer apps in increasing app engagement and usage, and for enterprise apps in communicating up-to-date business information. モバイル デバイスにとってはエネルギー効率が良く、通知の送信者にとっては柔軟であり、対応するアプリケーションがアクティブでない場合にも使用できるため、これはアプリからユーザーへの最適な通信方法です。It's the best app-to-user communication because it is energy-efficient for mobile devices, flexible for the notifications senders, and available when corresponding applications are not active.

いくつかの一般的なプラットフォームでのプッシュ通知の詳細については、次のトピックを参照してください。For more information on push notifications for a few popular platforms, see the following topics:

プッシュ通知のしくみHow push notifications work?

プッシュ通知は、"プラットフォーム通知システム" (PNS: Platform Notification System) と呼ばれるプラットフォーム独自のインフラストラクチャを利用して配信されます。Push notifications are delivered through platform-specific infrastructures called Platform Notification Systems (PNSes). これらは、用意されたハンドルを使用してデバイスにメッセージを配信する最小限のプッシュ機能を提供しており、共通のインターフェイスは備えていません。They offer barebone push functionalities to deliver a message to a device with a provided handle, and have no common interface. アプリの Android、iOS、Windows バージョンにまたがるすべての顧客に通知を送信するには、開発者は Apple Push Notification Service (APNS)、Firebase Cloud Messaging (FCM)、Windows 通知サービス (WNS) を個別に操作する必要があります。To send a notification to all customers across the Android, iOS, and Windows versions of an app, the developer must work with Apple Push Notification Service(APNS), Firebase Cloud Messaging(FCM), and Windows Notification Service(WNS) separately.

次の図に、プッシュ機能の概要を示します。At a high level, here is how push works:

  1. アプリケーションは、通知を受信することを決定します。そのため、アプリが実行されているターゲット プラットフォームの PNS にアクセスし、一意であり、かつ一時的なプッシュ ハンドルを要求します。An application decides it wants to receive notification, so it contacts PNS for the target platform where the app is running and requests a unique and temporary push handle. ハンドルの種類は、システムによって異なります (たとえば、WNS では URI を使用するのに対して、APNS ではトークンを使用します)。The handle type depends on the system (for example, WNS uses URIs while APNS uses tokens).
  2. クライアント アプリは、このハンドルをアプリのバックエンドまたはプロバイダーに格納します。The client app stores this handle in the app backend or provider.
  3. プッシュ通知を送信する際には、アプリのバックエンドがハンドルを使用して PNS にアクセスし、特定のクライアント アプリを対象として指定します。To send a push notification, the app backend contacts the PNS using the handle to target a specific client app.
  4. PNS はハンドルで指定されたデバイスに通知を転送します。The PNS forwards the notification to the device specified by the handle.

プッシュ通知のワークフロー

プッシュ通知の課題The challenges of push notifications

PNS は強力です。PNSes are powerful. ただし、一般的なプッシュ通知シナリオ (セグメント化されたユーザーへのプッシュ通知のブロードキャストなど) を実装するためでさえ、多くの作業がアプリ開発者に残されます。However, they leave much work to the app developer to implement even common push notification scenarios, such as broadcasting push notifications to segmented users.

プッシュ通知を送信するには、アプリケーションのメインのビジネス ロジックには関連のない複雑なインフラストラクチャが必要です。Pushing notifications requires complex infrastructure that is unrelated to the application's main business logic. インフラストラクチャの課題には、次のようなものがあります。Some of the infrastructural challenges are:

  • プラットフォームへの依存Platform dependency
    • PNS が統一されていないので、さまざまなプラットフォームのデバイスに通知を送信するためには、複雑で保守が難しい、プラットフォームに依存するロジックをバックエンドで用意する必要があります。The backend requires complex and hard-to-maintain platform-dependent logic to send notifications to devices on various platforms as PNSes are not unified.
  • スケールScale
    • PNS のガイドラインに従って、アプリが起動するたびにデバイス トークンを更新する必要があります。Per PNS guidelines, device tokens must be refreshed upon every app launch. バックエンドは、トークンを最新の状態に維持するためにのみ、大量のトラフィックやデータベース アクセスを処理します。The backend deals with a large amount of traffic and database access just to keep the tokens up-to-date. デバイスの数が数百台や、数千台、数百万台に増加すると、このインフラストラクチャの作成と保守にかかるコストも膨大になります。When the number of devices grows to hundreds, thousands, or millions, the cost of creating and maintaining this infrastructure is massive.
    • ほとんどの PNS は、複数のデバイスに対するブロードキャストをサポートしていません。Most PNSes do not support broadcast to multiple devices. 100 万台のデバイスへの単純なブロードキャストによって、PNS の 100 万回の呼び出しが発生します。A simple broadcast to a million devices results in a million calls to the PNSes. この量のトラフィックを最小限の遅延でスケーリングするのは簡単なことではありません。Scaling this amount of traffic with minimal latency is nontrivial.
  • ルーティングRouting
    • PNS はデバイスにメッセージを送信する機能を備えていますが、ほとんどのアプリの通知はユーザーや特定のグループを対象としています。Though PNSes provide a way to send messages to devices, most apps notifications are targeted at users or interest groups. バックエンドは、デバイスを対象のグループ、ユーザー、プロパティなどに関連付けるためのレジストリを保持する必要があります。この対策を行うことで、市場投入までの開発期間が長引き、アプリケーションの保守コストも増大します。The backend must maintain a registry to associate devices with interest groups, users, properties, etc. This overhead adds to the time to market and maintenance costs of an app.

Azure Notification Hubs を使用する理由Why use Azure Notification Hubs?

Notification Hubs により、お使いのアプリ バックエンドから独自にプッシュ通知を送信することに関連した複雑さがすべて排除されます。Notification Hubs eliminates all complexities associated with pushing notifications on your own from your app backend. そのマルチプラットフォーム対応の、スケールアウトされたプッシュ通知インフラストラクチャによって、プッシュ関連のコーディングが削減され、バックエンドが簡略化されます。Its multi-platform, scaled-out push notification infrastructure reduces push-related coding and simplifies your backend. Notification Hubs では、次の図に示すように、デバイス側の処理は PNS ハンドルをハブに登録するだけであり、バックエンドによってメッセージがユーザーまたは対象グループに送信されます。With Notification Hubs, devices are merely responsible for registering their PNS handles with a hub, while the backend sends messages to users or interest groups, as shown in the following figure:

Notification Hub の図

Notification Hubs はすぐに利用できるプッシュ エンジンであり、次のメリットがあります。Notification hubs is your ready-to-use push engine with the following advantages:

  • クロス プラットフォームCross platforms
    • iOS、Android、Windows のほか、Kindle や Baidu を含むすべての主要なプッシュ プラットフォームをサポートします。Support for all major push platforms including iOS, Android, Windows, and Kindle and Baidu.
    • すべてのプラットフォームに通知を送信する共通のインターフェイスを備えており、通知をプラットフォームの独自形式で送信することも、プラットフォームに依存しない形式で送信することもできます。プラットフォーム固有の対応は必要ありません。A common interface to push to all platforms in platform-specific or platform-independent formats with no platform-specific work.
    • デバイス ハンドルの管理は 1 か所で行えます。Device handle management in one place.
  • クロス バックエンドCross backends
    • クラウドまたはオンプレミスのCloud or on-premises
    • .NET、Node.js、Java などに対応しています。.NET, Node.js, Java, etc.
  • 豊富な一連の配信パターンRich set of delivery patterns
    • 1 つまたは複数のプラットフォームへのブロードキャスト: プラットフォームにまたがる数百万台のデバイスに 1 回の API 呼び出しで直ちにブロードキャストできます。Broadcast to one or multiple platforms: You can instantly broadcast to millions of devices across platforms with a single API call.
    • デバイスへのプッシュ: 通知を個々のデバイスに送信できます。Push to device: You can target notifications to individual devices.
    • ユーザーへのプッシュ: タグおよびテンプレート機能は、ユーザーのすべてのクロスプラットフォーム デバイスに到達するのに役立ちます。Push to user: Tags and templates features help you reach all cross-platform devices of a user.
    • 動的タグを使用したセグメントへのプッシュ: タグ機能は、デバイスをセグメント化し、1 つのセグメントまたはセグメントの式 (たとえば、アクティブ AND シアトルに在住 NOT 新規ユーザー) のどちらに送信しているかにかかわらず、ニーズに応じてそれらのデバイスにプッシュするのに役立ちます。Push to segment with dynamic tags: Tags feature helps you segment devices and push to them according to your needs, whether you are sending to one segment or an expression of segments (For example, active AND lives in Seattle NOT new user). パブリッシャー/サブスクライバー間に制限されず、デバイス タグはいつでもどこでも更新することができます。Instead of being restricted to pub-sub, you can update device tags anywhere and anytime.
    • ローカライズされたプッシュ: テンプレート機能は、バックエンド コードに影響を与えることなくローカライズを実現するのに役立ちます。Localized push: Templates feature helps achieve localization without affecting backend code.
    • サイレント プッシュ: デバイスにサイレント通知を送信し、それらをトリガーして特定のプルまたはアクションを完了することによって、push-to-pull パターンを有効にできます。Silent push: You can enable the push-to-pull pattern by sending silent notifications to devices and triggering them to complete certain pulls or actions.
    • スケジュールされたプッシュ: いつでも通知の送信をスケジュールできます。Scheduled push: You can schedule to send out notifications anytime.
    • ダイレクト プッシュ: Notification Hubs サービスへのデバイスの登録を省略し、デバイス ハンドルの一覧に直接バッチでプッシュできます。Direct push: You can skip registering devices with the Notification Hubs service and directly batch push to a list of device handles.
    • 個人用に設定されたプッシュ: デバイスのプッシュ変数は、カスタマイズされたキーと値のペアを使用して、デバイス固有の個人用に設定されたプッシュ通知を送信するのに役立ちます。Personalized push: Device push variables helps you send device-specific personalized push notifications with customized key-value pairs.
  • 豊富なテレメトリRich telemetry
    • 一般的なプッシュ、デバイス、エラー、および操作テレメトリは、Azure Portal とプログラムで使用できます。General push, device, error, and operation telemetry are available in the Azure portal and programmatically.
    • メッセージごとのテレメトリは、最初の要求呼び出しから Notification Hubs サービスがプッシュの送信を正常にバッチ処理するまで各プッシュを追跡します。Per Message Telemetry tracks each push from your initial request call to the Notification Hubs service successfully batching the pushes out.
    • プラットフォーム通知システムのフィードバックは、デバッグを支援するために、プラットフォーム通知システムからのすべてのフィードバックを通信します。Platform Notification System Feedback communicates all feedback from Platform Notification Systems to assist in debugging.
  • 拡張性Scalability
    • 再設計やデバイス シャーディングなしで、数百万台のデバイスに高速なメッセージを送信します。Send fast messages to millions of devices without rearchitecting or device sharding.
  • セキュリティSecurity
    • 共有アクセス シークレット (SAS) またはフェデレーション認証。Shared Access Secret (SAS) or federated authentication.

次の手順Next steps

通知ハブの作成および使用を開始してください。その手順は、モバイル アプリケーションにプッシュ通知を送信するチュートリアルに説明されています。Get started with creating and using a notification hub by following the Tutorial: Push notifications to mobile applications.