Push-уведомление не получено — AWS SNS и Expo

#amazon-web-services #react-native #expo #amazon-sns

#amazon-веб-сервисы #react-native #выставка #amazon-sns

Вопрос:

Я пытаюсь использовать AWS SNS для отправки своих push-уведомлений. Пока я просто тестирую. Я уже создал платформу и конечную точку в SNS. Когда я отправляю push-уведомление из консоли SNS, я получил его без проблем. Вот как я отправляю его оттуда:

 {"GCM": "{ "notification": {"title": "Test", "body": "It works" } }"}
  

Теперь я пытаюсь программно отправлять push-уведомления с помощью Javascript SDK, но я не могу заставить его работать правильно. Я тестирую приложение на своем реальном телефоне Android. Который подключается к моему серверному приложению, размещенному локально. Когда приложение открывается, я нажимаю кнопку, которая отправляет http-запрос в мое локальное серверное приложение, которое затем пытается отправить push-уведомление.

Странно то, что я получаю сообщение о том, что push-уведомление было отправлено, но я никогда не получаю его на свой телефон:

 Push notification sent successfully!!!!  {
  ResponseMetadata: { RequestId: 'XXX-5913-996f-b8ec0c010eac' },
  MessageId: 'XXX-5308-98e3-0689b03df4b7'
}
  

Это код, который у меня есть в моем локальном серверном приложении:

 module.exports.sendPushNotification = () => {
    var sns = new AWS.SNS({ apiVersion: '2010-03-31', region: 'us-east-1'});

    var params = {
        Message: `{
            "GCM": "{ "notification": {"title": "Test", "body": "It works" } }"
        }`,
        TargetArn: "######My Device ARN#######"
    };

    sns.publish(params, function(err, data) {
        if (err) {
            console.log("There was an error sending the push notification----> ", err)
        } // an error occurred
        else{
            console.log("Push notification sent successfully!!!! ", data);
        }                // successful response
    }); 
}
  

Я попытался изменить форматирование сообщения и все равно ничего. Что я делаю не так?

Ответ №1:

Спасибо человеку по имени «Джитеш Праджапати», который дал мне ответ на это в Facebook. Вот как это работает:

 var sns = new AWS.SNS({ apiVersion: '2010-03-31', region: 'us-east-1'})
    
        let notification = JSON.stringify({
            'notification': {
                'title': "Notification Title",
                'body': "Your message goes here",
                'data': {}
            }
        });
    
    
        var params = {
            Message: JSON.stringify({
                GCM: notification
            }),
            MessageStructure: "json",
            TargetArn: "### Your target ARN ###"
        };
    
        sns.publish(params, function(err, data) {
            if (err) {
                console.log("There was an error sending the push notification----> ", err)
            } // an error occurred
            else{
                console.log("Push notification sent successfully!!!! ", data);
            }                // successful response
        });