
プッシュ通知のしくみ
端末に対して任意のタイミングでメッセージを送信するために、各プラットフォームではバックエンドのサービスが提供されています。
プッシュ通知をとりまく環境
プッシュ通知を送るためには、主に以下の仕組みが存在します。
- アプリ
- サービスを提供するアプリやウェブサイトです。
- サービス提供者のサーバー
- サービス提供者が運営するサーバーです。
- 通知サービス
- スマートフォンやウェブブラウザにプッシュ通知を配信するサービスです。
- スマートフォン・ウェブブラウザの提供元が運営しています。
通知サービスはそれぞれ以下のような名前のサービスで運営されています。
プッシュサービス | 送信先のプラットフォーム |
---|---|
Apple Push Notification Service (APNs) | iOS, macOS |
Firebase Cloud Messaging (FCM) ※1 | Android, Chrome ブラウザ |
Amazon Device Messaging (ADM) | Kindle Fire |
Mozilla Push Service ※2 | Firefox ブラウザ |
Windows Notification Service (WNS) | Windows, Edge ブラウザ |
- ※1: 過去「Google Cloud Messaging(GCM)」や「C2DM (Cloud to Device Messaging)」と呼ばれるサービスも存在しました。
- ※2: サービスの実装は Autopush という名前でオープンソースとなっています。
プッシュ通知の送信の流れ
プッシュ通知の送信の流れは大きく「プッシュトークンの取得」と「プッシュ通知の送信」の2つのステップに分かれます。
アプリやウェブサイトでプッシュ通知を使う場合、まず端末やブラウザが通知サービスにプッシュの有効化を要求します。通知サービスはこれに対して「プッシュトークン」という情報を返します。
iOS やブラウザの場合、この前にユーザーに対して通知を表示する許可を得る必要があります。
プッシュトークンはプッシュ通知の送り先となる端末・アプリを特定する、プッシュ通知の送り先を示すものです。サーバーからプッシュ通知を送るためにはこの情報をサーバーへ送る必要があります。
サービス提供者のサーバーがプッシュトークンを保存していれば、任意のタイミングでプッシュ通知を送ることができます。プッシュサービスに対する認証情報・送り先となるプッシュトークン・送信するメッセージをプッシュサービスへ送ります。
すると、プッシュサービスと端末の間での常時接続を経由して、メッセージが届き、端末上に表示されます。
プッシュ通知の制限
プッシュ通知サービスには、以下のような制限があります。
- 規約上、通知の送達の確実性は保証されません。
- 送信時に電源オフや圏外にある端末には、送信時に設定した時間の間プッシュ通知システムが再送する場合があります。
- APNs や FCM では再送されますが、MPS では再送されません。
- FCM に対し再送時間をセットし大量に送信した場合(概ね10万件程度以上)、即時に配信されない場合があります。
- ユーザーが許可しない場合、もしくは許可を取り消した場合、通知メッセージは届かなくなります。