Amazon SNSを用いてAndroid(GMSとHMS)とiOSに対応したプッシュ通知の実装方法―サーバー(Amazon SNS:プッシュトークンの保存)
Amazon SNSの準備
- プラットフォームアプリケーションの作成
- サブスクリプションの作成
上記の2つについて、Amazon SNSを利用してモバイルプッシュ通知を送信するやり方ーコンソール利用をご参照ください。
AWS Lambdaでプラットフォームアプリケーションにプッシュトークンを登録する方法
index.js
// AWS SDKをロードする
const AWS = require('aws-sdk');
// リージョンを設定する
AWS.config.update({region: 'ap-northeast-1'});
// SNSサービスのオブジェクトを生成
const sns = new AWS.SNS();
exports.handler = async (event) => {
const response = {};
// 入力データを検証
if (!event) {
response.error = "No data";
return response;
}
// 入力データを検証(トークンがない)
if (!event.hasOwnProperty("token")) {
response.error = "No token";
return response;
}
// 入力データを検証(トークンがない)
if (!event.hasOwnProperty("token_type")) {
response.error = "No token type";
return response;
}
const token = event.token;
// FCMのプッシュトークン
if (event.token_type == "FCM") {
var params = {
PlatformApplicationArn: '作成したFCMのプラットフォームアプリケーションのARN',
Token: token
};
await sns.createPlatformEndpoint(params, function(err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
response["error"] = err;
} else {
console.log(data); // successful response
response["result"] = data;
}
}).promise();
} else if (event.token_type == "APNS") { // APNSのプッシュトークン
var params = {
PlatformApplicationArn: '作成したAPNSのプラットフォームアプリケーションのARN',
Token: token
};
await sns.createPlatformEndpoint(params, function(err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
response["error"] = err;
} else {
console.log(data); // successful response
response["result"] = data;
}
}).promise();
} else {
response.error = "Invalid token type";
}
return response;
};
GitHub
参考
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:プッシュ通知を配信:複数のデバイスに同時配信)