androidでプッシュ通知を実装する【第1回 概要】
普段スマホを利用していると、アプリを起動していなくても
アプリからの通知が色々きますよね。
SNSアプリなら新着メッセージを知らせてくれたり、
購買系アプリなら新商品を知らせてくれたり。
いまどきのアプリでは当たり前のようにあるこの機能の
androidアプリでの実装を説明していきます。
1、Google Cloud Messaging
サーバからアプリへメッセージを送ることが目標であるわけですが、
ユーザにダイレクトに送るわけではありません。
Googleに力を貸してもらいます。
GoogleがGoogle Cloud Messaging(以下GCM)という
無料(!)のサービスを提供しており、これを利用します。
2、GCMの概観
GCMを用いたプッシュ通知の実装にむけてまず三人の役者を確認しておきます。
・クライアントアプリ
これはそのまま対象となるアプリ、メッセージの送り先です。
アプリをインストールしているスマホやタブレット等の各々の端末と捉えてもおよそ大丈夫です。
・アプリケーションサーバ(Appサーバ)
アプリのサービスを提供しているサーバで、メッセージを送りたい大元です。
・GCMサーバ
GoogleのGCM用サーバです。
おおまかな流れとしては、AppサーバからGCMサーバに
通知を送りたいユーザの情報と送りたいメッセージを送り、
GCMサーバがその情報を元にユーザにメッセージを送るという非常にシンプルな流れです。
GCMサーバがAppサーバとクライアントアプリの間に立って手助けをしてくれるわけですね。
この流れ自体はシンプルとはいえ、どのアプリのどのユーザーにプッシュ通知を送るのか
特定するために認証情報を準備する必要があります。
以下ではそれらを見ておきましょう。
3、認証情報
GCMを用いたプッシュ通知を実装する上でおさえておくべき認証情報は以下になります。
要素の中身は最初はあまりピンと来ないと思うので、流し読みでも大丈夫です。
・センダーID
開発者がGoogle Developers Consoleで取得できる(次回以降詳しく説明します)プロジェクトのIDです。
クライアントアプリがGCMに登録する際に必要となります。
・APIキー
AppサーバがGoogleのAPIサービスへのアクセスを許可されていることを識別するためのキーです。
センダーID同様Google Developers Consoleから取得できます。
上のセンダーIDと紐づいています。
・レジストレーションID
GCMからクライアントアプリに向けて発行される登録IDです。
GCMサーバからの通知を受け取るアプリ及び端末を識別するためのIDです。
これもセンダーIDと紐づきます。
ではこれらを用いてどのようにプッシュ通知が実現されるのか
もう少し詳しく流れを追ってみます。
クライアントアプリがGCMサーバに対してセンダーIDを送り、(*アプリ内にセンダーIDを記しておきます)
レジストレーションIDを発行してくださーいと依頼します。
↓
GCMサーバはクライアントアプリの情報を登録すると同時に
クライアントアプリにレジストレーションIDを発行します。
これによりアプリがGCMサーバからメッセージを受け取れるようになります。
↓
クライアントアプリはAppサーバにレジストレーションIDを送り、
AppサーバはそのIDをデータベースなりなんなりに保管しておきます。
↓
AppサーバはGCMサーバに向けて、取得しておいたAPIキーを添えて
レジストレーションIDと送りたいメッセージを送ります。
↓
GCMサーバは送られてきたレジストレーションIDを元に通知先のクライアントアプリを判断し
クライアントアプリにメッセージを送ります。
↓
クライアントアプリはメッセージを受け取り、ユーザーに通知を行います。
以上になります。
Appサーバがクライアントアプリにメッセージを送ることの許可の識別が
センダーIDを介してされています。
4、次回
GCMを用いたプッシュ通知の基本的な流れを追いました。
次回以降はプッシュ通知実装に向けて必要なステップを
具体的に説明していきたいと思います。