用語や概念が少し分かりづらい部分があるため、最初に基本的な仕組みや用語の説明を自分用にまとめました。
[amazon template=wishlist&asin=4839952337]
Amazon SNSを用いて、モバイルPUSH通知を実現するためには、 トピックを利用した通知 と デバイスを直接指定した通知(直接アドレス指定) の 2 種類の方法があります。
- Amazon SNSには 通知を送りたいクライアント(Publisher)と通知を受け取りたいクライアント(Subscriber)の間に入る トピック という概念が存在します。
- 通知を送りたいクライアント(Publisher)は、トピック に対してメッセージを送信します。
- 通知を受け取りたいクライアント(Subscriber)は、トピック を購読(Subscription)します。
- 通知を受け取るクライアントが利用できるプロトロルは、 AWS Lambda / SQS / HTTP/S / Email / SMS と後述する Application のエンドポイントです。
- モバイルデバイスのPUSH通知を可能にするためには、Application を作成する必要があります。
- Application には、APNsのPUSH証明書やGCMの証明書を紐づけます。
- Application には、対応するプラットフォームにおける デバイストークン を登録することができます。
- モバイルデバイスのPUSH通知を可能にするためには、Application を作成する必要があります。
- Application には、各プラットフォームのデバイストークンを登録します。登録するとそのデバイストークンに対応する エンドポイント がSNSから発行されます。
- Publisher は、この エンドポイント に直接メッセージを送ることができます。これを 直接アドレス指定 とよびます。
- これは トピック を経由せずメッセージを送信できる例外的な仕組みです。
- 通知を送りたいデバイスが明確に決まっている場合にこの手法を使います。
- 利用するAPI:Amazon SNS>>Actions>>Publish / PHP DOCS
- パラメーター: Message: String, Subject: Option[String], TargetArn: TopicArn | EndpointArn
- ドキュメント:https://docs.aws.amazon.com/ja_jp/sns/latest/dg/SNSMobilePush.html
- トピック数上限: 100,000 トピック/アカウント
- サブスクリプション数上限: 10,000,000 サブスクリプション/トピック
- ただし、AWSにお問い合わせフォームから連絡を入れるだけで無料で上限解放してもらえるようです(ソース)
- 送信データ:最大 256 KB のテキストデータ(XML、JSON、未フォーマットのテキストなど)
- 発行したメッセージ数、通知に成功した数、通知に失敗した数、発行したデータサイズを、AWS CloudWatch API経由で確認することができる
- 自動的に無効化される
- 無効化された際にサーバー側へ通知を送ることができる
[amazon template=wishlist&asin=4797392568]