Amazon SNSを用いてAndroid(GMSとHMS)とiOSに対応したプッシュ通知の実装方法―クライアント(Android-GMS)
グーグルモバイルサービスが入っているデバイスでは、Firebase Cloud Messaging(FCM)でプッシュ通知を配信できます。クライアント側の実装は https://firebase.google.com/docs/cloud-messaging/android/client をご参照いただければと思います。ここではAWSとの連携部分を重点的に紹介します。
AWSとの連携要点
プッシュトークンは以下の2箇所で返ってきます。
class MyFirebaseMessagingService : FirebaseMessagingService() {
fun onNewToken(registrationToken: String) {
// ここでプッシュトークンをAWSに渡します
}
}
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
if (!task.isSuccessful) {
return
}
val token = task.result
// ここでプッシュトークンをAWSに渡します
})
この2箇所でプッシュトークンを受け取って、AWSに送ります。
仮にAWSでLambdaとAPI Gatewayで次のようなAPIを作ったとします。
API:https://your.domain.amazonaws.com/add-push-token
メソッド:POST
ヘッダー:Context-Type : application/json
リクエスト:
{
"token": "Your Token",
"token_type": "FCM"
}
そうしたら、クライアント側では、次のようにデータを送ります。
fun sendPushToken(
context: Context,
pushToken: String
) {
val queue = Volley.newRequestQueue(context)
val param = JSONObject().apply {
put("token", pushToken)
put("token_type", "FCM")
}
val postRequest: JsonObjectRequest = object : JsonObjectRequest(
"https://your.domain.amazonaws.com/add-push-token",
param,
object : Response.Listener<JSONObject>{
override fun onResponse(response: JSONObject?) {
// プッシュトークンの送信が成功
}
},
object : Response.ErrorListener{
override fun onErrorResponse(error: VolleyError?) {
// プッシュトークンの送信が失敗
}
}) {
}
queue.add(postRequest)
}
参考
Amazon SNSを用いてAndroid(GMSとHMS)とiOSに対応したプッシュ通知の実装方法
1―概要
2―クライアント(Android-GMS)
3―クライアント(Android-HMS)
4―クライアント(iOS-APNS)
5―サーバー(Amazon SNS:プッシュトークンの保存)
6―サーバー(Amazon SNS:プッシュトークンの管理:HMS)
7―サーバー(Amazon SNS:プッシュトークンの保存:HMS)
8―サーバー(Amazon SNS:プッシュ通知を配信)
9―サーバー(Amazon SNS:プッシュ通知を配信:HMS)
10―サーバー(Amazon SNS:プッシュ通知を配信:複数のデバイスに同時配信)