
プッシュ通知システムの構成
必要となる構成要素は何があるのでしょうか。また、設計の際の注意点とは何でしょうか。
プッシュ通知システムの構成要素
プッシュ通知を送信するサーバーシステムは、大きく分けて3つの構成要素があります。
- アプリからプッシュトークンの登録・更新を受け付ける「アプリ向けAPI」
- 送信するメッセージや送信時間を管理する「管理機能」
- プッシュ通知を送信する「送信機能」
BoltzEngineはこのうち、「送信機能」の一部を担うプッシュ通知エンジンです。
アプリ向けAPI
アプリからプッシュトークンの登録・更新を受け取り、サーバー上のデータベースを更新するAPIが必要です。
プッシュトークンは単に登録されるだけでなく、その後更新がある場合に更新対象となる端末を特定できる必要があります。既存のシステムがある場合は、ユーザーの属性としてプッシュトークン追加することも考えられるでしょう。
例えば、以下のようなAPIが必要になるでしょう。
- 端末新規登録 API
- 端末トークン更新 API
- ユーザー・端末紐付け API (ユーザーログインが存在するシステムの場合)
管理機能
多くの場合、送信するメッセージを登録したり、送信時間を設定するといった管理機能が必要となるでしょう。
メッセージの入力、送信先の選択といった機能を持った管理画面を用意することができます。別システムからの連係情報を元にメッセージを送るなどといった場合、管理画面を持たずにスクリプトだけで完結させる場合もあります。
管理画面を作るのであれば、このような機能が必要になるでしょう。
- 送信メッセージ
- 送信履歴
- 送信予約変更
送信機能
管理機能から渡された条件を元に、送信先のプッシュトークンを特定、プッシュ通知メッセージを組み立て、APNs や FCM といった通知サービスへ送信する部分です。
BoltzEngine では、送信先のプッシュトークンの特定・メッセージの組み立てを行うプログラムのことを「ゲートウェイ」と呼んでおり、ゲートウェイで作成された送信リクエストを適宜スケジューリングして通知サービスへ配信します。
また、送信した結果、プッシュトークンが無効になっていることを検出することがあります。更に、APNsでは定期的にフィードバックサービスに接続して無効になったプッシュトークンを受信する必要があります。そのため、無効トークンを削除したり無効マークする機能も必要となります。
プッシュ通知による影響を考慮する
プッシュ通知はユーザーに対してアプリの起動を喚起し、ユーザをアプリに誘導することができます。送信すると、すぐにアプリを起動してくれるユーザーも多くいるでしょう。
つまり、大規模にプッシュ通知を送信して多くのユーザーがアプリを起動した場合、アプリから発生するアクセスも大規模となり、サーバーの負荷になる場合があります。大規模な同時配信を予定しているアプリでは、多数の同時アクセスによる影響を考慮したインフラ設計・負荷試験などをしておきましょう。
また、BoltzEngine では配信速度を意図的に制限し、同時アクセスによる影響を軽減させる配信速度制御機能を搭載していますので、合わせて検討すると良いでしょう。
構成例
メッセージ管理システムを導入してアプリと統合する
BoltzEngine では管理機能として BoltzMessenger が提供されています。全体・チャンネル(カテゴリ)指定・セグメントといった配信先の決定、送信時間の設定などがパッケージを導入するだけで実現できます。
既存システムに通知の管理機能を組み込む
すでにコンテンツ管理システムやアプリ向けAPIを持っている場合、アプリ向けのトークンの登録・更新APIとメッセージの管理画面・送信機能を開発することでプッシュ通知機能を実現できます。
メール配信システムを置き換える
すでにメール配信システムがあり、これをプッシュ通知に置き換えるというパターンでは、アプリ向けのトークンの登録・更新APIを新規に用意し、管理画面・送信機能を改修することでプッシュ通知システムを実現できます。