Poslat SNS oznámení všem Uživatelům, kteří upsaného základního tématu z Lambda

0

Otázka

Vytvořil jsem E-Commerce IOS aplikace s backend v nodejs (AWS Lambda). Když uživatel podepsané/LoggedIn, aplikace se hlásí jako SNS Téma , které jsem vytvořil pro odeslání oznámení a ukládá push token a zařízení ARN v DB. Teď chci poslat push oznámení všem uživatelům, kteří se přihlásili, že SNS Téma,, když jsme přidali novou položku do obchodu. V současné době, poslat oznámení jsem načítání všechny uživatele z DB a smyčky prostřednictvím uživatelům, aby se jejich tlak token a odeslat oznámení uživatelům po jednom, což je velmi nákladný proces, a API vzal příliš mnoho času.

Teď chci udělat, je hit SNS téma z Lambda a předat tělo oznámení, že téma a že SNS téma bude posílat oznámení všem uživatelům, kteří se přihlásili na Téma. Hledal jsem, ale nemůžu najít žádné řešení.

Kód jsem udělal poslat oznámení

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

Ale pro to budu muset načíst všechny uživatele z DB získat jejich endpoint ARN a pak poslat oznámení o iteraci.

Chci zavolat SNS téma předat orgánu oznámení a SNS bude posílat oznámení, aby každý uživatel, který se zaregistroval, že SNS téma.

Dělám to, protože chci ušetřit náklady, aby přinesla každé uživatele z DB a pak poslat oznámení

1

Nejlepší odpověď

0

To je, jak můžete dosáhnout, že tok. Myslím, že už mají některé části této realizován.

  1. Vytvořit téma, které budou použity k ventilátoru ven oznámení pro všechny uživatele: https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html

  2. Vytvořit platformu aplikace(y) pro různé platformy je aplikace používá na: https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformApplication.html

  3. Když se uživatel zaregistruje pro vaši aplikaci, vytvořit platformu koncový bod pro aplikaci odpovídající uživatele platformy: https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformEndpoint.html

    3.1. Pokud chcete být schopni cíl tohoto uživatele přímo, a také uchovávejte tento ARN někde pro přímé vydává (jako teď ty).

  4. Nyní také vytvořit předplatné pro téma vytvořili v kroku 1 do koncového bodu ARN: https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html

  5. Publikování na téma vytvořené během kroku 1: https://docs.aws.amazon.com/sns/latest/api/API_Publish.html

SNS se automaticky ventilátor zprávu pro všechny účastníky (všechny uživatele), tak každý z nich obdrží oznámení, aniž byste iterace každého uživatele.

2021-11-24 23:11:24

V jiných jazycích

Tato stránka je v jiných jazycích

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