プッシュ通知
プッシュ通知とは
そもそもプッシュ通知とは何でしょうか。 モバイルアプリ開発の文脈では、狭義の意味で、Android端末やiOS端末などの通知領域に表示されるメッセージを発信する機能を指すことが多いです。 しかし広義の意味では、サービス提供側が能動的にユーザに情報を発信する仕組みと言えます。 携帯端末の通知領域に表示されるメッセージの他に、例えば以下のようなものもプッシュ通知の一種と言えるでしょう。
- メールアドレスに基づくEmail送信
- 電話番号に基づくSMSメッセージ送信
- 電話番号に基づくLINEの通知メッセージ送信
モバイルアプリの開発時にプッシュ通知という要件が出てきた場合、 広義の意味での情報発信が求められているのか、 狭義の意味での携帯端末の通知領域へのメッセージ発信が求められているのか確認が必要です。
本ガイドでは、狭義の意味での携帯端末の通知領域へのメッセージ発信について説明していきます。 以降特に断りがない限り、プッシュ通知という言葉は、狭義の意味での携帯端末の通知領域へのメッセージ発信を指すものとします。 また、本ガイドではAndroid端末とiOS端末へのプッシュ通知を対象とし、その他のOSの端末へのプッシュ通知やWebブラウザへのWebプッシュは取り扱いません。
プッシュ通知の種類
携帯端末におけるプッシュ通知には、リモート通知とローカル通知の2種類が存在します。 それぞれの概要は以下のとおりです。
リモート通知
- 特徴
- 外部のサーバから、アプリがインストールされたユーザ端末へメッセージを送信する機能
- 指定した複数の端末に対して一括でメッセージを送信可能
- ユーザ端末がインターネットに接続されていない間は配信されない
- 配信できなかった場合、一定期間(Androidの場合は最大28日、iOSの場合は非公開)は再配信が試みられる。
- 活用例
- ユーザの付近に雨雲が接近している時にお知らせ
- 確定したサービス利用料金のお知らせ
ローカル通知
- 特徴
- ユーザの端末内にインストールされているアプリから、処理の完了時や予定時刻などにメッセージを表示する機能
- 自端末内にのみメッセージを表示可能
- ユーザ端末がインターネットに接続されていない場合でもメッセージを表示可能
- 活用例
- アプリのバックグラウンド処理(ダウンロード処理など)の完了通知
- スケジュールアプリで予定を登録し、予定時刻の数分前にリマインドメッセージを表示
- 音楽プレイヤーアプリでバックグラウンドでの音楽再生中に、再生/停止などの操作を通知領域内で行うためのメッセージを表示
プッシュ通知を利用する際には、目的に応じてこれらの方式を使い分ける必要があります。 本ガイドでは、実装する上で知っておくべき点の多いリモート通知について解説していきます。
リモート通知の仕組み
開発者がリモート通知を送信するための方法としては、大別して以下の2つが存在します。
- 端末のOS識別は自前で行い、各OSの開発元が提供する公式提供の配信サービスのAPIを直接呼びだす
- 端末のOSに応じて適切な公式提供の配信サービスを呼び出してくれる、サードパーティが提供するサービスを利用する
それぞれの詳細は以下のとおりです。
端末のOS識別は自前で行い、各OSの開発元が提供する公式提供の配信サービスを直接利用する
AndroidやiOSといった主要なモバイル端末のOSでは、OSの開発元の会社によってプッシュ通知を配信するサービスが提供されています。 AndroidであればFirebase Cloud Messaging (FCM)がその役割を内包しています。 iOSであればApple Push Notification service (APNs)が該当します。 開発者はそれぞれのサービスのAPIを呼びだすことでリモート通知を送信できます。
AndroidならFCM、iOSならAPNsのAPIを直接呼びだすことで、各OS特有の細かいオプションも含めた全ての機能を利用できます。 一方でAPIを呼び分けるためには、送信先の端末のOSが何なのかは自前で識別し、それぞれのOSにあった適切な公式サービスを呼びだす必要があります。
端末のOSに応じて適切な公式提供の配信サービスを呼び出してくれるクラウドサービスを利用する
端末のOS種別に応じてFCMやAPNsを直接呼び出せばリモート通知の送信は可能です。 しかし端末のOS種別を自前で管理して適切なサービスを呼び分けるのは、開発を進める上で手間がかかります。 こうした面倒な実装を肩代わりし、さらに効果的に通知をユーザに届けるための付加機能を追加してくれるサービスがいくつか提供されています。 こうしたサービスの例として、以下のものが挙げられます。
- Firebase Cloud Messaging
- Androidへプッシュ通知を配信する公式サービスであるのに加えて、APNs経由でのiOSへの配信やWeb Pushにも対応
- デバイスがトピックを購読でき、指定したトピックを購読している端末へリモート通知を配信する機能を提供
- デバイスグループを定義しておき、その端末グループへリモート通知を配信する機能を提供
- Firebase Analyticsなど、Firebaseの他サービスと連携可能
- Amazon Pinpoint
- Android/iOS/Kindle Fire/Baiduなどにプッシュ通知を送信可能。またEmailやSMSメッセージも送信可能
- ユーザ端末のOS種別や直近の利用状況などに応じてセグメント分類し、セグメント単位でメッセージを送信可能
- メッセージ送信のスケジューリングが可能
- Azure Notification Hubs
- Android/iOS/Windows/Kindle/Baiduなどにプッシュ通知を送信可能
- アクティビティ、関心事、場所、設定などに基づいて対象顧客のセグメント分類し、セグメント単位でメッセージを送信可能
- メッセージ送信のスケジューリングが可能
本ガイドで取り扱う内容
本ガイドでは、Firebase Cloud Messagingを用いてAndroid、iOS双方にリモート通知を送信する場合の構成と実装例について解説します。