Amazon SNSを用いてAndroid(GMSとHMS)とiOSに対応したプッシュ通知の実装方法―クライアント(Android-HMS)
HMSデバイスでは、HMS Push Kitでプッシュ通知を配信できます。クライアント側の実装は https://developer.huawei.com/consumer/jp/doc/development/HMSCore-Guides/android-client-dev-0000001050042041 をご参照いただければと思います。ここではAWSとの連携部分を重点的に紹介します。
AWSとの連携要点
プッシュトークンは以下の2箇所で返ってきます。
class MainService: HmsMessageService() {
override fun onNewToken(token: String?) {
super.onNewToken(token)
// ここでプッシュトークンをAWSに渡します
}
}
val token = HmsInstanceId.getInstance(context).getToken(appId, "HCM")
if (token.isNotEmpty()) {
// ここでプッシュトークンを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": "HMS"
}
そうしたら、クライアント側では、次のようにデータを送ります。
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:プッシュ通知を配信:複数のデバイスに同時配信)