プッシュ通知についての個人的な整理
モバイルアプリを開発しているとプッシュ通知が要件に入っていることが結構多いです。そういうときのために、作る側目線でざっくりと整理し直してみました。
プッシュ通知あれこれ
アプリの文脈でプッシュ通知と言われたときは大抵サーバープッシュを指してますね。
- サーバープッシュ(リモートプッシュ)
- プッシュサーバーから端末に対して送信するプッシュ通知
- OS毎に用意された仕組みを使う
- ローカルプッシュ
- 端末内で完結するプッシュ通知
- アプリで実装する(OS毎にAPIが用意されている)
- サーバー不要、ネットワーク不要(オフラインOK)
- Webプッシュ
- Webブラウザに対してプッシュ通知を送る
- RFCで標準化された仕組みを使う
- 裏でService Workerが動いている
- ローカルプッシュに当たるNotifications APIという別の仕組みもある
サーバープッシュの仕組み
Android、iOSともゲートウェイサービスを介してプッシュを配信します。AndroidのゲートウェイサービスはFirebase Cloud Messaging (FCM) 、iOSはApple Push Notification Service(APNs)です。
ゲートウェイサービスに対してプッシュ配信要求を出すと、ゲートウェイサービスが端末に対してプッシュを送ってくれる、という流れ。
ちなみに、Androidで以前使われていたGCM (Google Cloud Messaging) は2019年4月11日に廃止されました。
プッシュ通知配信サービス
世の中にはいろいろなプッシュ配信サービスがありますが、それらはゲートウェイサービスを提供しているわけではなく、FCMやAPNsのフロントエンドとして機能します。
プッシュの仕組みそのものはゲートウェイサービスに依存するのでどれも一緒。
- クロスプラットフォーム(iOS, Android, Web…)
- 配信性能 (大量のプッシュを高速かつ安定的に配信できる)
- 柔軟な配信設定 (配信対象や条件を柔軟に設定できる)
- GUIの提供
- 集計分析機能
- 専用ライブラリ/SDK提供
などが差別化ポイントです。
有名どころとしては
- Google Cloud Messaging
- iOS向けにAPNs対応しているので、GCMだけで両OSに対応できる
- Amazon Simple Notification Service (SNS)
- Azure Notification Hubs
- ニフクラ mobile backend
- OneSignal
- CORE PUSH
あたりでしょうか。
プッシュ通知配信サービスは必要?
ゲートウェイサービスはHTTPのエンドポイントやSDKを提供しているので、自前で作り込めばプッシュ通知を送れます。
ただ、いろいろと面倒なことが多いので、プッシュ通知配信サービスに肩代わりしてもらったほうがラク。よほど特殊な要件出ない限りは、何らかのプッシュ通知配信サービスを使う前提で調査したほうがよさそうです。
とりあえず Google Cloud Messaging で検討してみて、足りないところがあったら他のサービス、という感じかなー。
参考URL
関連(するかもしれない)記事
おススメ