Lambda'dan konuya abone olan tüm Kullanıcılara SNS bildirimi gönderme

0

Soru

Nodejs'de (AWS Lambda) arka ucu olan bir E-Ticaret İOS uygulaması oluşturdum. Bir kullanıcı oturum açtığında / oturum açtığında, uygulama bildirim göndermek için oluşturduğum bir SNS Konusuna abone olur ve push belirtecini ve cihaz arn'sini db'de saklar. Şimdi, mağazaya yeni bir öğe eklediğimizde, SNS Konusuna abone olan tüm kullanıcılara push bildirimi göndermek istiyorum. Şu anda, bildirim göndermek için tüm kullanıcıları dB'den alıyorum ve kullanıcılar arasında push belirtecini almak ve kullanıcılara tek tek bildirim göndermek için döngü yapıyorum, bu çok maliyetli bir süreç ve API çok fazla zaman aldı.

Şimdi ben istiyorum yapmak için isabet SNS konu Lambda ve pass vücudun bildirim için bu konu ve bu SNS konu olacak bildirim göndermek için tüm kullanıcılar kim sahip olunan bir Konu. Onu aradım ama bir çözüm bulamıyorum.

Bildirim göndermek için yaptığım kod şu şekildedir

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

Ancak bunun için dB'den her kullanıcıyı son nokta arn'sini almalı ve ardından yinelemeyle bildirim göndermeliyim.

SNS konusunu çağırmak istiyorum bildirim gövdesini iletin ve SNS, bu SNS konusuna abone olan her kullanıcıya bildirim gönderir.

Bunu yapıyorum çünkü her kullanıcıyı dB'den almak ve ardından bildirim göndermek için maliyetten tasarruf etmek istiyorum

1

En iyi cevabı

0

Bu akışı böyle başarabilirsin. Bunun bazı kısımlarını zaten uyguladığınızı düşünüyorum.

  1. Bildirimi tüm kullanıcılarınıza dağıtmak için kullanılacak bir konu oluşturun: https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html

  2. Uygulamanızın kullanıldığı farklı platformlar için platform uygulamaları oluşturun: https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformApplication.html

  3. Bir kullanıcı uygulamanız için kaydolduğunda, kullanıcının platformuna karşılık gelen uygulama için bir platform bitiş noktası oluşturun: https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformEndpoint.html

    3.1. Bu kullanıcıyı doğrudan hedefleyebilmek istiyorsanız, bu arn'yi doğrudan yayınlar için de bir yerde saklayın (şu anda yaptığınız gibi).

  4. Şimdi de 1. adımda bitiş noktası ARN için oluşturulan konu için bir abonelik oluşturun: https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html

  5. 1. adım sırasında oluşturulan konuya yayımlayın: https://docs.aws.amazon.com/sns/latest/api/API_Publish.html

SNS, iletiyi tüm abonelere (tüm kullanıcılarınıza) otomatik olarak dağıtacak ve böylece her bir kullanıcı üzerinde yinelemeden her biri bir bildirim alacaktır.

2021-11-24 23:11:24

Diğer dillerde

Bu sayfa diğer dillerde

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