Azure Notification Hubs には、任意のバックエンド (クラウドまたはオンプレミス) から任意のプラットフォーム (iOS、Android、Windows など) に通知を送信できる、使いやすくスケールアウトされたプッシュ エンジンが用意されています。 Notification Hubs は、エンタープライズ シナリオとコンシューマー シナリオの両方で機能します。 シナリオの例を次に示します。
- 待機時間が短い数百万人にニュース速報通知を送信します。
- 関心のあるユーザー セグメントに場所ベースのクーポンを送信します。
- メディア/スポーツ/財務/ゲーム アプリケーションのユーザーまたはグループにイベント関連の通知を送信します。
- プロモーションコンテンツをアプリケーションにプッシュして、顧客にエンゲージメントを高め、市場に投入します。
- 新しいメッセージや作業項目などのエンタープライズ イベントをユーザーに通知します。
- 多要素認証のコードを送信します。
注
Firebase Cloud Messaging の非推奨と移行の手順については、「Google Firebase Cloud Messaging の移行」を参照してください。
プッシュ通知とは
プッシュ通知は、モバイル アプリのユーザーが特定の必要な情報 (通常はモバイル デバイスのポップアップまたはダイアログ ボックス) を通知する、アプリ間通信の一種です。 ユーザーは通常、メッセージを表示または無視することを選択します。前者を選択すると、通知を伝えるモバイル アプリケーションが開きます。 一部の通知はサイレントであり、アプリが処理して何を行うかを決定するためにバックグラウンドで配信されます。
プッシュ通知は、アプリのエンゲージメントと使用状況を増やすコンシューマー アプリや、エンタープライズ アプリが up-to日付のビジネス情報を伝達する際に不可欠です。 モバイル デバイスではエネルギー効率が高く、通知の送信者には柔軟性があり、対応するアプリケーションがアクティブでない場合に利用できるため、アプリ間の通信に最適です。
注
Azure Notification Hubs は、Voice Over Internet Protocol (VOIP) プッシュ通知を公式にサポートしていません。ただし、この記事では、Azure Notification Hubs を 介して APNS VOIP 通知を使用する方法について説明 します。
一般的なプラットフォームのプッシュ通知の詳細については、次のトピックを参照してください。
プッシュ通知のしくみ
プッシュ通知は、プラットフォーム 通知システム (PNS) と呼ばれるプラットフォーム固有のインフラストラクチャを介して配信されます。 提供されたハンドルを使用してデバイスにメッセージを配信するための基本的なプッシュ機能を提供し、共通のインターフェイスはありません。 Android、iOS、および Windows バージョンのアプリのすべてのユーザーに通知を送信するには、開発者は Apple Push Notification Service (APNS)、Firebase Cloud Messaging (FCM)、Windows Notification Service (WNS) と個別に連携する必要があります。
大まかに言うと、プッシュのしくみを次に示します。
- アプリケーションは通知を受信する必要があるため、アプリが実行されているターゲット プラットフォームの PNS に接続し、一意の一時的なプッシュ ハンドルを要求します。 ハンドルの種類はシステムによって異なります (たとえば、WNS では URI が使用され、APNS ではトークンが使用されます)。
- クライアント アプリは、このハンドルをアプリ バックエンドまたはプロバイダーに格納します。
- プッシュ通知を送信するために、アプリ バックエンドはハンドルを使用して PNS に接続し、特定のクライアント アプリをターゲットにします。
- PNS は、ハンドルによって指定されたデバイスに通知を転送します。
プッシュ通知の課題
PNS は強力です。 ただし、セグメント化されたユーザーにプッシュ通知をブロードキャストするなど、一般的なプッシュ通知シナリオを実装するために、アプリ開発者には多くの作業が必要です。
プッシュ通知を送信するには、アプリケーションの主要なビジネス ロジックとは無関係の複雑なインフラストラクチャが必要です。 インフラストラクチャの課題の一部を次に示します。
- プラットフォームの依存関係
- PNS は統合されないため、バックエンドでは、さまざまなプラットフォーム上のデバイスに通知を送信するために、複雑で保守が困難なプラットフォーム依存ロジックが必要です。
- スケール
- PNS ガイドラインに従って、アプリの起動時にデバイス トークンを更新する必要があります。 バックエンドは、トークン up-toを保持するために、大量のトラフィックとデータベースアクセスを処理しています。 デバイスの数が数百、数千、または数百万に増加すると、このインフラストラクチャの作成と保守にかかるコストは膨大になります。
- ほとんどの PNS では、複数のデバイスへのブロードキャストはサポートされていません。 100 万台のデバイスへの単純なブロードキャストにより、PNS への 100 万件の呼び出しが行われます。 この量のトラフィックを最小限の待機時間でスケーリングすることは、問題ありません。
- ルーティング
- PNS はデバイスにメッセージを送信する方法を提供しますが、ほとんどのアプリ通知はユーザーまたは関心グループを対象としています。 バックエンドは、デバイスを関心グループ、ユーザー、プロパティなどに関連付けるためにレジストリを維持する必要があります。このオーバーヘッドにより、アプリの市場投入時間とメンテナンス コストが増加します。
Azure Notification Hubs を使用する理由
Notification Hubs では、アプリ バックエンドから独自にプッシュ通知を送信する場合に関連するすべての複雑さが排除されます。 マルチプラットフォームでスケールアウトされたプッシュ通知インフラストラクチャにより、プッシュ関連のコーディングが削減され、バックエンドが簡素化されます。 Notification Hubs では、次の図に示すように、デバイスは PNS ハンドルをハブに登録するだけで、バックエンドはユーザーまたは関心グループにメッセージを送信します。
Notification Hubs は、次の利点を備えたすぐに使用できるプッシュ エンジンです。
- クロス プラットフォーム
- すべての主要なプッシュ プラットフォームのサポート。
- プラットフォーム固有の作業なしで、プラットフォーム固有またはプラットフォームに依存しない形式ですべてのプラットフォームにプッシュするための共通インターフェイス。
- デバイス ハンドルの管理を 1 か所で行います。
- クロスバックエンド
- クラウドまたはオンプレミス。
- .NET、Node.js、Java、Python など
- 豊富な配信パターン
- 1 つ以上のプラットフォームにブロードキャストする: 1 つの API 呼び出しを使用して、プラットフォーム間で数百万台のデバイスに即座にブロードキャストできます。
- デバイスへのプッシュ: 個々のデバイスに通知をターゲットにすることができます。
- ユーザーへのプッシュ: タグとテンプレートは、ユーザーのすべてのクロスプラットフォーム デバイスにアクセスするのに役立ちます。
- 動的タグを使用してセグメントにプッシュ: タグ機能は、デバイスをセグメント化し、ニーズに応じてプッシュするのに役立ちます。1つのセグメントに送信するか、またはセグメントの論理式 (例: アクティブでかつシアトル在住のユーザーで新規ユーザーではない) に基づいて送信することができます。 publish-subscribe に制限されるのではなく、デバイス タグをいつでも更新できます。
- ローカライズされたプッシュ: テンプレート機能は、バックエンド コードに影響を与えずにローカライズを実現するのに役立ちます。
- サイレント プッシュ: デバイスにサイレント通知を送信し、特定のプルまたはアクションを完了するようにトリガーすることで、プルへのプッシュ パターンを有効にすることができます。
- スケジュールされたプッシュ: 通知をいつでも送信するようにスケジュールできます。
- ダイレクト プッシュ: Notification Hubs サービスへのデバイスの登録をスキップし、デバイス ハンドルの一覧に直接バッチ プッシュできます。
- カスタマイズされたプッシュ: デバイス プッシュ変数は、カスタマイズされたキーと値のペアを使用して、デバイス固有のカスタマイズされたプッシュ通知を送信するのに役立ちます。
- スケーラビリティ
- 再設計やデバイス シャーディングを行わずに、何百万ものデバイスに高速メッセージを送信します。
- セキュリティ
- Shared Access Secret (SAS) またはフェデレーション認証。
次のステップ
チュートリアル: モバイル アプリケーションへのプッシュ通知に関するチュートリアルに従って、通知ハブの作成と使用を開始します。