プッシュ通知の仕組み

ここでは FCM と Kii Cloud の関係について説明します。

このページに示す内容は、FCM と APNs に共通します。MQTT を使った実装の仕組みは、MQTT プロトコル を参照してください。

プッシュ通知を実現するための構成

いずれのプッシュ通知ネットワークを使用する場合も、プッシュ通知を以下の 3 つの要素を使って実現します。

  • FCM/APNs サーバー

    Google や Apple が提供しているプッシュ通知用サービスのためのサーバーです。

  • スマートフォンなどのデバイス

    エンドユーザーが使用しているデバイスです。

  • アプリケーションサーバー

    Kii Cloud です。プッシュ通知でのアプリケーションサーバーとしての機能が組み込まれています。

各プッシュ通知ネットワークでは、デバイスの 1 つ 1 つをデバイストークンによって識別します。デバイストークンは特定のデバイス上の特定のモバイルアプリを識別するための ID で、デバイス上で FCM や APNs のライブラリーを呼び出すことで発行されます(デバイスの IMEI ではありません)。FCM/APNs サーバーは、デバイストークンと実デバイスとの対応表を管理していることになります。

プッシュ通知を送信するには、アプリケーションサーバーからプッシュメッセージと共に送信先のデバイストークンを指定して、プッシュ通知ネットワークのサーバーを呼び出します。その結果、各プッシュ通知ネットワークの実装により、指定したデバイストークンのデバイスにメッセージが届きます。

なお、プッシュ通知で扱うメッセージは、図に示すように JSON 形式の文字列です。JSON では任意のデータを送信できるほか、プッシュ通知ネットワークに特有の制御フィールドも含みます。

Kii Cloud でのプッシュ通知

Kii Cloud の API では、プッシュ通知の送信先はユーザーによって決まります。デバイスではありません。

Kii Cloud が持つ 3 つのプッシュ通知の送信機能では、以下のようにユーザーが関連しています。

  • サーバー上の変更のプッシュ通知(Push to App)では、ユーザーによって講読された Bucket が更新されたとき、そのユーザーのデバイスに対してプッシュ通知が送信されます。
  • ユーザープッシュ通知(Push to User)では、ユーザーによって講読されたトピックにメッセージが送信されたとき、そのユーザーのデバイスに対してプッシュ通知が送信されます。
  • 管理者メッセージのプッシュ通知(Direct Push)では、ユーザー 1 人を管理者が送信先に指定し、そのユーザーのデバイスに対してプッシュ通知が送信されます。

1 人のユーザーが複数のデバイスを持っており、各デバイスから必要な初期化が行われていた場合、1 回のプッシュ通知のリクエストで、そのユーザーの全デバイスに同時に通知が行われます。

ユーザーに対してプッシュ通知を送信できるよう、Kii Cloud では、ユーザーとデバイストークンの対応表を管理しています。プッシュ通知の送信先として指定されたユーザーが、複数のデバイストークンと紐付く場合は、プッシュ通知ネットワークに対して複数回のプッシュ通知リクエストを出します。

送信先はユーザーが関連するため、ユーザーを定義せずにプッシュ通知を利用することはできません。明示的なログインを避けたい場合は、仮ユーザー 等を使った実装を検討してください。

リクエストの流れ

プッシュ通知を初期化してからメッセージを受信するまでの流れは次のとおりです。Kii Cloud の SDK を使うと、一部が背後に隠れますが、仕組みとしては以下の動きになります。

  1. デバイスは、FCM/APNs サーバーにデバイスを登録するリクエストを送信します。

  2. FCM/APNs サーバーは、デバイスを登録し、デバイストークンを発行します。

  3. デバイスでは、Kii Cloud にログインした状態でクライアント SDK の初期化 API を呼び出します。これにより、デバイストークンは Kii Cloud に転送され、ユーザー ID とデバイストークンの組がクラウド上に保存されます。

  4. Kii Cloud で、何らかのイベントが発生します。Kii Cloud のプッシュ通知の仕様では、送信対象のユーザーが持つすべてのデバイスに通知されます。Kii Cloud は、保存したユーザー ID とデバイストークンの組から、対象となるデバイストークンのセットを見つけます。

  5. Kii Cloud は、FCM/APNs サーバーに、通知対象のデバイストークンに対するプッシュ通知の要求を行います。

  6. FCM/APNs サーバーは、デバイスにプッシュメッセージを送信します。デバイスは受信したプッシュメッセージを処理することができます。

ここで、デバイストークンを Kii Cloud に登録する処理(:num3:)をデバイスのインストールと呼びます。インストール処理は、モバイルアプリの初期化の際や、プッシュ通知ネットワークがデバイストークンの変更を通知した際に実行する必要があります。

デバイスのインストール

デバイストークンを Kii Cloud に登録する処理(上記 リクエストの流れ:num3:)をデバイスのインストールと呼びます。

デバイスのインストールの詳細は、デバイスのインストール を参照してください。

モバイルアプリの構成

Android と iOS のネイティブアプリでプッシュ通知を利用するときのモバイルアプリの構成は以下のとおりです。

モバイルアプリには、モバイルアプリ本体のプログラムの他、FCM/APNs を使用するためのライブラリーと、Kii Cloud SDK を組み込みます。

FCM/APNs のライブラリーは、プッシュ通知の受信のために、Kii Cloud SDK は Kii Cloud へのアクセスのために使用します。

ここで、Kii Cloud SDK はプッシュ通知の実装に依存していない点にご注意ください。プッシュ通知の実装方法が変わった場合、Kii Cloud SDK が新しいプッシュ通知の方式に対応するのを待つ必要はありません。プッシュ通知で使用するライブラリーの更新と、モバイルアプリ本体のプッシュ通知の実装を新しい方式に変更するだけで対応が完了します。