AWS SNSを利用してプッシュ通知アプリを送信するアプリを作成したことがありました。アーキテクチャ検討時に調べたSNSを利用することのメリットについて記述します。
プッシュ通知の仕組み(SNSを使用しない場合)
AWS SNSを利用しなくてもプッシュ通知は送信できます。プッシュ通知はアプリから直接スマホに送信するわけではありません。プッシュ通知サーバが居て、そこにプッシュ通知の送信を依頼するアーキテクチャになります。端末を識別するデバイストークンもプッシュ通知サーバーが発行します。
このプッシュ通知サーバーはスマホのOSによって異なります。
大まかに以下の流れでプッシュ通知が送信されます。
スマホで初回アプリを起動する際、プッシュ通知を許可しますか?という表示を見た方もいると思います。許可するとその情報がプッシュ通知サーバに送信されます。
デバイスを識別するためのデバイストークンが返却されてきます。デバイストークンの形式はAndroidの場合、 (11文字) + :APA91b + (134文字)の形式、iOSの場合は16進数の64文字です。
バックエンドのアプリサーバがデバイストークンを受け取ります。このデバイストークンをユーザと紐づけてデータベースに保存しておきます。
API経由でデバイストークンと送信したいメッセージを指定してプッシュ通知を依頼します。スマホのOSによってAPIが異なります。
実行されたAPIに基づいてプッシュ通知を送信します。
プッシュ通知の仕組み(SNSを使用する場合)
ではSNSを使用するとどのような流れでプッシュ通知を送信するのでしょうか?基本的な流れはSNSを使用しない場合と似ています。
スマホで初回アプリを起動する際、プッシュ通知を許可しますか?という表示を見た方もいると思います。許可するとその情報がプッシュ通知サーバに送信されます。
デバイスを識別するためのデバイストークンが返却されてきます。デバイストークンの形式はAndroidの場合、 (11文字) + :APA91b + (134文字)の形式、iOSの場合は16進数の64文字です。
(SNSを使用しない場合と同じ)
バックエンドのアプリサーバがデバイストークンを受け取ります。このデバイストークンをユーザと紐づけてデータベースに保存しておきます。
SNS上ではデバイストークンから生成したエンドポイントを使ってデバイスを扱います。エンドポイントとデバイストークンは1対1になっており、役割は同じです。
トピックというグループのようなものにエンドポイントを登録することができます。
プッシュ通知の送信は、トピックまたはエンドポイントに対して行えます。
まとめて送信したい場合:トピック
個別に送信したい場合:エンドポイント
上記で使い分けることができます。
指定したトピックに登録されているデバイス、またはエンドポイントのデバイスにプッシュ通知を送信します。
SNSを使用した際のメリット
SNS採用に当たり調査したメリットについて記載します。以下に記載しているメリット以外にもいろいろあるかもしれません。
送信処理が高速
プッシュ通知を送信している個所は非同期化してくれるので高速になります。また、複数の宛先にプッシュ通知を送信する場合は処理を並列で行ってくれます。
一度の送信処理で複数の宛先に送信可能
トピックに複数のエンドポイントを登録しておけば一度に複数のデバイスにプッシュ通知を送信することができます。
グループ宛、個別宛の小回りが利く
送信先をトピックあてにすればまとめてプッシュ通知を送信、エンドポイントあてにすれば個別にプッシュ通知を送信できます。
毎月100万件までのプッシュ通知が無料
毎月最初の 100 万 Amazon SNS リクエストは無料です。この上限を超えた後の料金は 100 万 リクエストごとに 0.50USD です。料金についてはアップデートがある可能性があるので公式ドキュメントを参照ください。
プッシュ通知の送信をCloudWatchで監視できる
SNSを利用するだけでプッシュ通知の配信数、成功数、失敗数などを監視することができます。監視するための設定などは一切不要です。
まとめ プッシュ通知でSNSを使うのはメリットが多い
プッシュ通知送信アプリでSNSを使用するのはメリットが多数あることを紹介しました。
AWS SNSはプッシュ通知以外にも多数使い方があり、学習コストが高いですがメリットもたくさんあるので学ぶ価値は高いなあと感じました。
PR
当ブログはWordPressテーマSWELLを使用しています。非常に使いやすく、簡単にプロのようなデザインを使えるのでお勧めです!!
SWELL – シンプル美と機能性両立を両立させた、圧巻のWordPressテーマ
システムエンジニア
AWSを中心としたクラウド案件に携わっています。
IoTシステムのバックエンド開発、Datadogを用いた監視開発など経験があります。
IT資格マニアでいろいろ取得しています。
AWS認定:SAP, DOP, SAA, DVA, SOA, CLF
Azure認定:AZ-104, AZ-300
ITIL Foundation
Oracle Master Bronze (DBA)
Oracle Master Silver (SQL)
Oracle Java Silver SE
■略歴
理系の大学院を卒業
IT企業に就職
AWSのシステム導入のプロジェクトを担当