メモ > 技術 > サービス: AmazonSNS > 概要・前提・注意点など
概要・前提・注意点など
■概要
AndroidとiOSにプッシュ通知を送信するためのメモ。
AndroidとiOSではプッシュ通知のためのプログラムは変わるものの、基本的な流れは同じ。
端末の「デバイストークン」とアプリの「バンドルID」をもとに、送信対象の「端末」と端末にインストールされている「アプリ」を特定する。
プッシュ通知の配信は、Androidでは「FCM(Firebase Cloud Messaging)」を、iOSでは「APNs(Apple Push Notification Service)」を使用し、
GoogleやAppleが提供しているAPIをプログラムから叩くことで実現する。
大量のプッシュ通知を安定して配信するのは難しい部分が多い。
よって配信は、最終的にAmazonSNSに任せるといい。
今回は、
1. Android単体でプッシュ通知を実装する。
2. iOS単体でプッシュ通知を実装する。
3. AmazonSNSから、AndroidとiOSの両方にプッシュ通知を送信する。
という流れで実装する。
■主な参考ページ
AWS SNSからAndroidにプッシュ通知するためにやったこと、ハマったこと - Qiita
https://qiita.com/nashitake/items/4724527c5c6fef4427d2
Android から Amazon SNS を使ってみる - Qiita
https://qiita.com/kusokamayarou/items/27e023ad06cade20c731
AndroidのPush通知の導入方法 - Qiita
https://qiita.com/YusukeYamazaki/items/9394234089b776bcb320
[2019年度版]AWS SNSでiOSのプッシュ通知 設定手順まとめ | カフーブログ
https://kahoo.blog/howto-aws-sns-ios-push-notification/
AWS SDK for PHP を用いた Amazon SNS の操作 - Qiita
https://qiita.com/gomi_ningen/items/1002d256285c6d72c6ac
Amazon SNSでプッシュ通知を送るための基礎知識 | UNITRUST
https://www.unitrust.co.jp/6182
以下は後発の記事なので、そのうち参考にしたい。
AmazonSNSを使ったpush通知の実装について #AWS - Qiita
https://qiita.com/Dai_Kentaro/items/5b17272207c66adcdbe4
■アプリのID
※iOSアプリではAppIDに、net.refirio.* のようなワイルドカードを利用することができ、複数のバンドルIDを作成する必要がなくなる。
ただしこの場合、バンドルIDをもとにアプリを特定する必要がある機能を利用できない。
プッシュ通知やアプリ内課金がこれにあたるので、今回はワイルドカードのまま使わない。
いったんアプリを公開すると変更できないので、慎重に決定したい。
「iOSとAndroidの両方で作る」「本番用と検収用と開発用がある」「Pushも使用する」などを考慮する。
現状の結論として、以下のようにするのが良さそう。
・iOSもAndroidも net.refirio.pushtest1 のようなIDにする。
・例えば開発版書き出し時には .dev を付ける。
つまり、具体的には以下のようなIDになる。
net.refirio.pushtest1 … 本番
net.refirio.pushtest1.stg … 検収
net.refirio.pushtest1.dev … 開発(ローカル環境など)
iOSとAndroidでIDを統一できるように、「pushtest1」部分にハイフンやアンダーバーは無い方が無難か。
(と思ったが、使える文字も異なるので無理にIDを統一する必要は無いかもしれない。
ただしURLや各種サービスのIDは、普段からできるだけ統一しておきたいので悩ましいところ。)
詳細はこのテキストの「考察: 本番公開用に作成する」も参考に。
■iOSのp8証明書
iOSではプッシュ通知の送信に証明書が必要になる。
p8証明書を使えば、証明書の定期的な更新が不要になる。
詳細は後述の「iOS: p8証明書」を参照。