Trimite notificare SNS pentru toți Utilizatorii care subscriu la subiect de la Lambda

0

Problema

Am creat o adresă de E-Commerce aplicație IOS cu backend în nodejs (AWS Lambda). Atunci când un utilizator signedIn/LoggedIn, aplicația subscrie un SNS Subiect care l-am creat pentru a trimite notificări și stochează împinge token-ul și dispozitivul de ARN în DB. Acum vreau să trimite o notificare împinge pentru toți utilizatorii care s-au abonat care SNS Subiect, atunci când am adăugat un element nou la magazin. În prezent, pentru a trimite o notificare sunt preluarea tuturor utilizatorilor din DB și bucla prin utilizatori pentru a obține împinge token-ul și a trimite o notificare a utilizatorilor, unul câte unul, ceea ce este foarte costisitor proces, și API luat prea mult timp.

Acum vreau să fac este de a lovi SNS subiect de la Lambda si trece organismul de notificare în acest subiect și că SNS subiect va trimite o notificare tuturor utilizatorilor care s-au abonat la Subiect. Am cautat, dar nu se poate găsi nici o soluție.

Codul trebuie făcut pentru a trimite o notificare este

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);
        });
     }));

Dar pentru aceasta trebuie să aducă fiecare utilizator din DB ia lor final ARN și apoi trimite o notificare prin repetare.

Vreau să sun SNS subiect trece organismul de notificare și SNS va trimite o notificare pentru fiecare utilizator care a subscris ca SNS subiect.

Fac asta pentru că vreau pentru a salva costul de a aduce fiecare utilizatorii din DB și apoi trimite o notificare

1

Cel mai bun răspuns

0

Acest lucru este cum ar putea realiza acest flux. Cred că aveți deja unele părți ale acestui puse în aplicare.

  1. Creați un subiect care va fi folosit pentru ventilator de notificare a tuturor utilizatorilor: https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html

  2. A crea platforma de aplicare(s) pentru diferite platforme aplicația este folosit pe: https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformApplication.html

  3. Atunci când un utilizator se conectează pentru aplicația dvs., de a crea o platformă endpoint pentru aplicarea corespunzătoare a utilizatorului platforma: https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformEndpoint.html

    3.1. Dacă doriți să fie în măsură să direcționeze acest utilizator direct, de asemenea, magazin acest ARN undeva directe publică (cum faci si tu acum).

  4. Acum, de asemenea, creați un abonament pentru subiect creat la pasul 1 la final ARN: https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html

  5. Publica la subiect creat la pasul 1: https://docs.aws.amazon.com/sns/latest/api/API_Publish.html

SNS va automat fan mesajul pentru toți abonații (toți utilizatorii), astfel încât fiecare dintre ei va primi o notificare fără tine iterarea peste fiecare utilizator.

2021-11-24 23:11:24

În alte limbi

Această pagină este în alte limbi

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