ユーザープッシュ通知 (Push to User)
ユーザープッシュ通知は、「出版-購読型モデル」のメッセージング機能を提供します。この機能を使うと、管理者やユーザーから他のユーザーに対して素早くメッセージをプッシュ送信できます。
このページでは、ユーザープッシュ通知(Push to User)がサポートしている機能について説明します。実装方法は以下を参照してください。
- トピックの作成
- トピック一覧の取得
- トピックの削除
- トピック購読の有無の確認
- トピックの購読
- トピックの有無の確認
- トピックの購読解除
- メッセージの送信
- メッセージの受信
- トピックの ACL のカスタマイズ
プッシュ通知の仕組み
ユーザープッシュ通知は次のように動作します。
- あるユーザーまたは管理者により、新たな「トピック」が作成される。
- このトピックを、他のユーザーが「購読」する。
- あるユーザーまたは管理者がこのトピックにメッセージを送信する。
- このメッセージが全ての購読者にプッシュされる。
デバイス間の同期などを目的として、自分自身にメッセージを送信することもできます。
トピックは、プッシュメッセージを送信するためのチャンネルの役割を果たします。あるトピックに興味のあるユーザーは、このトピックを購読することにより、以後このトピックに送信されたプッシュメッセージを受信できます。
トピックを複数のユーザーが講読している状態で、そのトピックにメッセージを送信すると、購読しているユーザーのデバイスすべてにプッシュ通知が送信されます(1 人が複数デバイスを所有している場合もすべてのデバイスに送信されます)。上の例では、トピックに対するメッセージ送信 1 回に対して、2 人のデバイスに同時にプッシュ通知が行われています。購読していないユーザーのデバイスには送信されません。
トピックとスコープ
トピックは、以下のいずれかのスコープを持ちます。
- アプリケーションスコープ:トピックはアプリケーション(管理者)に属します。
- グループスコープ:トピックはある特定のユーザーグループに属します。
- ユーザースコープ:トピックはある特定のユーザーに属します。
トピックがこれらのスコープに所属するのは、「はじめに」の スコープとアクセス権 に示した Bucket と同様です。つまり、Bucket とトピックは、アプリケーション、グループ、ユーザーのそれぞれの各インスタンスに所属する形で、次の図のように並列に存在する概念といえます。
Thing スコープでも同様にトピックを作成、購読できます。
現在の Kii Cloud では、スコープによって、トピックの作成方法とメッセージの送信方法が異なります。
アプリケーションスコープでは、トピックの作成は REST API によって行います。メッセージの送信は開発者ポータルのユーザーインターフェイスによって行います。使用には管理者権限が必要であるため、管理者がトピックの作成とメッセージの送信を行います。
グループスコープとユーザースコープでは、トピックの作成とメッセージの送信とも、モバイルアプリから Kii Cloud SDK の API を呼び出すことによって実行します。
トピックの購読とプッシュ通知の例
グループスコープのトピックに対して、購読と通知を行う例を以下に示します。2 つのグループにそれぞれトピックが作成されており、メンバーのユーザー 3 人から操作する例です。
上記 1~4 の操作を詳細に見ていくと次のようになります。
トピックを作成
トピックは、アプリケーション、グループ、ユーザーの各スコープで作成できます。トピックは名前を付けて作成し、その名前によってプログラムから参照します。
図はグループスコープのトピックを作成した例ですが、図のように、グループごとに異なるトピックを作成することもできます(ただし、実際の利用シーンでは、同一のトピックを作成する事例が多くなるはずです)。
トピックを購読
ログイン中のユーザーからトピックを購読することで、ユーザーとトピックを関連付けます。トピックを購読するためには、ユーザーはログインしている必要があります。
図の例のように、ユーザーは複数のトピックを購読することができます。
トピックを購読する際、ログイン中のユーザーは、購読のアクセス許可を持つ必要があります。アクセス許可の詳細は トピックに対するアクセス権 をご覧ください。
メッセージを送信
プッシュ通知を行いたい場合は、スコープに応じてクライアント SDK の API または開発者ポータルから、トピックに対してメッセージ送信のリクエストを出します。
メッセージ送信の際、プッシュ通知を送信するプッシュ通知ネットワークおよび環境(開発用/配布用)を選択したり、ペイロードに含む情報を指定したりできます。
トピックにメッセージを送信する際、ログイン中のユーザーは、送信のアクセス許可を持つ必要があります。アクセス許可の詳細は トピックに対するアクセス権 をご覧ください。
プッシュ通知を受信
トピックを購読しているユーザーが持つデバイスに、プッシュ通知ネットワークを通してプッシュ通知が行われます。プッシュ通知の対象となるユーザーが持つデバイスすべてに通知が行われます。
同名のトピックであっても、トピックのインスタンスが異なる場合、通知は行われません。上の図では「テニス同好会」の「Received」は対象になりません。
利用シナリオ
スコープごとの利用シナリオ
3 つのスコープのトピックは、次のような用途に応用できます。
アプリケーションスコープ
アプリケーションスコープのトピックの使用例として、管理者より全ユーザーに対して、一斉通知を行うためのチャンネルとしての用途が挙げられます。
次のようにトピックを作成、利用することになります。
- 管理者がアプリケーションスコープのトピックを作成。
- ユーザーによる初回起動時に、このトピックを購読するようにモバイルアプリを実装。
- 開発者ポータルよりこのトピックを選択しメッセージ送信を行うことで、ユーザーに対してメッセージを一括通知。
グループスコープ
グループスコープのトピックの使用例として、ユーザーグループ間でメッセージ交換を行うためのチャンネルを、モバイルアプリから動的に作成する用途が挙げられます。
次のようにトピックを作成、利用することになります。
- ユーザーはユーザーグループを作成し、友人をこのグループに招待(ユーザーグループの利用方法などについては グループ管理 を参照)。
- ユーザーは、このグループに属するグループスコープのトピックを作成。
- ユーザーは、グループメンバーにこのトピックを購読するよう依頼(購読依頼できるようにモバイルアプリを機能設計)。
- トピック購読者からトピックに対してメッセージを送信することで、他のメンバーに対してメッセージを通知。
ユーザースコープ
ユーザースコープのトピックの使用例として、ユーザーが保持する全てのデバイスに対してメッセージをプッシュする用途が挙げられます。
たとえば、TODO リスト管理のモバイルアプリを想定します。あるデバイスでユーザーが TODO を入力すると、この TODO がユーザーの保持する他デバイスにプッシュ通知され、その結果全てのデバイス上で最新の TODO リストが確認できるようになります。
TODO リスト管理の例では、次のようにトピックを作成、利用することになります。
- ユーザーは、自分用のユーザースコープのトピックを作成。
- ユーザーは、自分自身でこのトピックを購読。
- ユーザーが所有するすべてのデバイスでプッシュ処理を初期化。
- 以後、あるデバイスにおいてこのトピック宛てに TODO を送信することで、他のデバイスに対してこの TODO を通知。
トピックを使った応用
送信先セグメントの分割
トピックを使ったプッシュ通知を応用すると、ユーザーの特定セグメントにだけプッシュ通知を送信する使い方もできます。たとえば、性別を表すトピックを使って、女性のユーザーにだけセール情報をプッシュ通知することができます。
実現のためには、上記 アプリケーションスコープ の利用例を応用します。配信したいセグメントの種類の数だけトピックを用意しておき、モバイルアプリの初期化時に該当するトピックを講読します。管理者が該当トピックにプッシュメッセージを送信すれば、目的のセグメントにだけ情報を配信できます。
トピックはカテゴリーの数だけ用意する必要があります。たとえばユーザーの年齢に応じて 20 歳未満、20 代、30 代、40 代、50 代、60 代以上のような年代別のプッシュ通知を行いたい場合は、その数だけのトピックが必要です。たとえば 50 代以上に配信したい場合は、50 代と 60 代以上のトピック両方にメッセージを送信します。
また、年齢と性別など複数の条件で配信を行いたい場合は、20 代男性、20 代女性、30 代男性…など、配信要件に応じた数のトピックを作成し、AND 条件で複数のトピックを指定して配信する必要があります。
アクセス権の変更例
トピックに対するアクセス権は、そのトピックが作成されたスコープごとにデフォルトの値が決まっています。アクセス許可の詳細は トピックに対するアクセス権 をご覧ください。
モバイルアプリによっては、トピックの購読やメッセージの送信を実行できるユーザーをカスタマイズしたい場合があります。Kii Cloud では、トピックのアクセス許可をモバイルアプリから変更することができます。
トピックのアクセス許可を変更するシナリオの例として、以下のようなケースが考えられます。
グループスコープのトピックをオープンにしたい
この例は、グループ内のメッセージングを行うモバイルアプリで、グループスコープのトピックを認証済みユーザー全員にオープンにする場合です。グループ以外のユーザーも購読のみのメンバーとしてメッセージの通知だけを受け取れるようにするようなシナリオです。 これは、トピック作成者が、そのトピックに「認証済みユーザー:購読可能」の許可を追加することで実現できます。
グループスコープのトピックをある特定のユーザーも購読・メッセージ送信ができるようにしたい
この例は、グループ内のメッセージングを行うモバイルアプリで、グループスコープのトピックを特定のユーザー(ユーザー A とします)からも購読とメッセージ送信をできるようにしたい場合です。特定のユーザーを管理者として招待して、グループメンバーと同様にプッシュ通知を利用させるシナリオです。 これは、トピック作成者が、そのトピックに「ユーザー A:購読可能」と「ユーザー A:メッセージ送信」の許可を追加することで実現できます。
ユーザースコープのトピックをグループメンバー全員で共有したい
この例は、TODO リストの管理を行うモバイルアプリで、個人が作成した TOOD リストをグループメンバー全員と共有したい場合です。すでに家族メンバーが参加しているユーザーグループ(グループ A とします)にユーザースコープのトピックを公開して、個人の TODO リストをグループメンバーとも共有するシナリオです。 これは、トピック作成者が、そのトピックに「グループ A:購読可能」の許可を追加することで実現します。