0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Amazon SNSを用いてAndroid(GMSとHMS)とiOSに対応したプッシュ通知の実装方法5―サーバー(Amazon SNS:プッシュトークンの保存)

Last updated at Posted at 2021-05-07

Amazon SNSを用いてAndroid(GMSとHMS)とiOSに対応したプッシュ通知の実装方法―サーバー(Amazon SNS:プッシュトークンの保存)

Amazon SNSの準備

  1. プラットフォームアプリケーションの作成
  2. サブスクリプションの作成

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

0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?