プッシュ通知でAWS SNSを利用するメリット

AWS SNSを利用してプッシュ通知アプリを送信するアプリを作成したことがありました。アーキテクチャ検討時に調べたSNSを利用することのメリットについて記述します。

目次

プッシュ通知の仕組み(SNSを使用しない場合)

AWS SNSを利用しなくてもプッシュ通知は送信できます。プッシュ通知はアプリから直接スマホに送信するわけではありません。プッシュ通知サーバが居て、そこにプッシュ通知の送信を依頼するアーキテクチャになります。端末を識別するデバイストークンもプッシュ通知サーバーが発行します。
このプッシュ通知サーバーはスマホのOSによって異なります。

プッシュ通知サーバーはAndroidの場合はFirebase、iOSの場合はAPNsです。

大まかに以下の流れでプッシュ通知が送信されます。

プッシュ通知の仕組み
プッシュ通知送信の仕組み
STEP
アプリ起動時にプッシュ通知許可

スマホで初回アプリを起動する際、プッシュ通知を許可しますか?という表示を見た方もいると思います。許可するとその情報がプッシュ通知サーバに送信されます。

STEP
プッシュ通知サーバーがデバイストークンを返却

デバイスを識別するためのデバイストークンが返却されてきます。デバイストークンの形式はAndroidの場合、 (11文字) + :APA91b + (134文字)の形式、iOSの場合は16進数の64文字です。

STEP
プッシュ通知サーバから受け取ったデバイストークンをアプリサーバーへ送信

バックエンドのアプリサーバがデバイストークンを受け取ります。このデバイストークンをユーザと紐づけてデータベースに保存しておきます。

STEP
デバイストークンを指定してプッシュ通知送信を依頼

API経由でデバイストークンと送信したいメッセージを指定してプッシュ通知を依頼します。スマホのOSによってAPIが異なります。

STEP
プッシュ通知送信

実行されたAPIに基づいてプッシュ通知を送信します。

プッシュ通知の仕組み(SNSを使用する場合)

ではSNSを使用するとどのような流れでプッシュ通知を送信するのでしょうか?基本的な流れはSNSを使用しない場合と似ています。

SNSを使用するプッシュ通知の仕組み
SNSを使用したプッシュ通知の送信
STEP
アプリ起動時にプッシュ通知許可(SNSを使用しない場合と同じ)

スマホで初回アプリを起動する際、プッシュ通知を許可しますか?という表示を見た方もいると思います。許可するとその情報がプッシュ通知サーバに送信されます。

STEP
プッシュ通知サーバーがデバイストークンを返却(SNSを使用しない場合と同じ)

デバイスを識別するためのデバイストークンが返却されてきます。デバイストークンの形式はAndroidの場合、 (11文字) + :APA91b + (134文字)の形式、iOSの場合は16進数の64文字です。

STEP
プッシュ通知サーバから受け取ったデバイストークンをアプリサーバーへ送信
(SNSを使用しない場合と同じ)

バックエンドのアプリサーバがデバイストークンを受け取ります。このデバイストークンをユーザと紐づけてデータベースに保存しておきます。

STEP
SNSにデバイストークンを渡してエンドポイント生成

SNS上ではデバイストークンから生成したエンドポイントを使ってデバイスを扱います。エンドポイントとデバイストークンは1対1になっており、役割は同じです。
トピックというグループのようなものにエンドポイントを登録することができます。

トピックに登録しておくと、まとめてプッシュ通知を送信できます。

エンドポイントにはARNが割り当てられます。ARNとはAWS上のリソースを一意で表す識別子です。

STEP
トピックまたはエンドポイントあてにメッセージ送信

プッシュ通知の送信は、トピックまたはエンドポイントに対して行えます。
まとめて送信したい場合:トピック
個別に送信したい場合:エンドポイント
上記で使い分けることができます。

STEP
6.プッシュ通知送信(トピック指定の場合は複数の端末に送信)

指定したトピックに登録されているデバイス、またはエンドポイントのデバイスにプッシュ通知を送信します。

SNSを使用した際のメリット

SNS採用に当たり調査したメリットについて記載します。以下に記載しているメリット以外にもいろいろあるかもしれません。

送信処理が高速

プッシュ通知を送信している個所は非同期化してくれるので高速になります。また、複数の宛先にプッシュ通知を送信する場合は処理を並列で行ってくれます。

一度の送信処理で複数の宛先に送信可能

トピックに複数のエンドポイントを登録しておけば一度に複数のデバイスにプッシュ通知を送信することができます。

グループ宛、個別宛の小回りが利く

送信先をトピックあてにすればまとめてプッシュ通知を送信、エンドポイントあてにすれば個別にプッシュ通知を送信できます。

毎月100万件までのプッシュ通知が無料

毎月最初の 100 万 Amazon SNS リクエストは無料です。この上限を超えた後の料金は 100 万 リクエストごとに 0.50USD です。料金についてはアップデートがある可能性があるので公式ドキュメントを参照ください。

プッシュ通知の送信をCloudWatchで監視できる

SNSを利用するだけでプッシュ通知の配信数、成功数、失敗数などを監視することができます。監視するための設定などは一切不要です。

まとめ プッシュ通知でSNSを使うのはメリットが多い

プッシュ通知送信アプリでSNSを使用するのはメリットが多数あることを紹介しました。
AWS SNSはプッシュ通知以外にも多数使い方があり、学習コストが高いですがメリットもたくさんあるので学ぶ価値は高いなあと感じました。

PR
当ブログはWordPressテーマSWELLを使用しています。非常に使いやすく、簡単にプロのようなデザインを使えるのでお勧めです!!

SWELL – シンプル美と機能性両立を両立させた、圧巻のWordPressテーマ

ランキング

ランキングに参加しています。クリックして応援いただけると嬉しいです。
にほんブログ村 IT技術ブログ クラウドコンピューティングへ
にほんブログ村
AWSランキング
AWSランキング

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次