LoginSignup
0
0

More than 1 year has passed since last update.

Amazon SNSを用いてAndroid(GMSとHMS)とiOSに対応したプッシュ通知の実装方法2―クライアント(Android-GMS)

Last updated at Posted at 2021-05-07

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:プッシュ通知を配信:複数のデバイスに同時配信)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0