Envoyer SNS notification à tous les Utilisateurs qui souscrit le sujet de Lambda

0

La question

J'ai créé une adresse E-Commerce de l'application IOS avec backend en nodejs (AWS Lambda). Lorsqu'un utilisateur signedIn/LoggedIn, l'application souscrit un SNS Sujet que j'ai créé pour envoyer des notifications et des magasins de la pousser jeton et appareil ARN en DB. Maintenant, je veux envoyer des notifications push à tous les utilisateurs qui ont souscrit que SNS Sujet, lorsque nous avons ajouté un nouvel élément à la boutique. Actuellement, pour envoyer une notification je suis aller chercher tous les utilisateurs de la DB et une boucle par les utilisateurs pour obtenir leur poussée jeton et d'envoyer des notifications aux utilisateurs un par un, ce qui est très coûteux, et de l'API a pris trop de temps.

Maintenant, je veux faire est de frapper le SNS sujet de Lambda et de passer le corps de la notification à ce sujet et que SNS sujet enverra une notification à tous les utilisateurs qui ont souscrit le Sujet. J'ai cherché mais ne trouve pas de solution.

Le code que j'ai fait pour envoyer une notification est

await Promise.all(targetArns.map(async (item, index) => {
         const publishNotificationParams = { 
            "TargetArn": item,
            "Message": JSON.stringify({
              "default": JSON.stringify({
                  "category" : title,
                  "alert" : {
                    "title" : title,
                    "body" : 'New product is launced',
                    "data" : product
                  },
                  "badge" : 1,
                  "sound" : "chime.aiff"
                }),
                "APNS_SANDBOX": JSON.stringify(params),
                "APNS": JSON.stringify(params)
            }),
            "MessageStructure": "json"
        };
        var publishTextPromise = sns.publish(publishNotificationParams).promise();
       publishTextPromise.then(
        function(data) {
          console.log(`Message ${publishNotificationParams.Message} sent to the topic ${publishNotificationParams.TargetArn}`);
        }).catch(
          function(err) {
          console.error(err, err.stack);
        });
     }));

Mais pour cela, je dois récupérer tous les utilisateurs de DB obtenir leur point de terminaison ARN et ensuite envoyer une notification par itération.

Je veux l'appeler topic SNS passer le corps de la notification et du SNS enverra une notification à chaque utilisateur qui a souscrit que SNS sujet.

Je le fais parce que je veux économiser sur le coût de récupérer tous les utilisateurs de DB et ensuite envoyer une notification

1

La meilleure réponse

0

C'est de cette façon que vous pourriez réaliser que flux. Je pense que vous avez déjà certaines parties de cette mise en œuvre.

  1. Créer une rubrique qui sera utilisé pour le fan de la notification à l'ensemble de vos utilisateurs: https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html

  2. Créer une application de la plateforme(s) pour les différentes plates-formes de votre application est utilisée sur: https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformApplication.html

  3. Lorsqu'un utilisateur s'inscrit à votre application, créer une plate-forme de point de terminaison pour l'application correspondant à l'utilisateur de la plateforme: https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformEndpoint.html

    3.1. Si vous voulez être en mesure de cibler cet utilisateur directement, également stocker ces ARN quelque part direct publie (comme vous le faites maintenant).

  4. Maintenant, créez également un abonnement pour le sujet créé à l'étape 1 à l'extrémité ARN: https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html

  5. Publier sur le sujet créé lors de l'étape 1: https://docs.aws.amazon.com/sns/latest/api/API_Publish.html

SNS automatiquement fan le message à tous les abonnés (tous les utilisateurs), de sorte que chacun d'entre eux recevra une notification sans vous itération sur chaque utilisateur.

2021-11-24 23:11:24

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................