web-dev-qa-db-fra.com

FCM avec AWS SNS

J'utilise des ressources AWS pour mon projet Android, je prévois d'ajouter un service de notification Push pour mon projet avec AWS SNS. Quelques questions me préoccupent beaucoup. Je n'ai trouvé aucune question à ce sujet, sauf une ou deux mais avec des explications peu claires.

1.Est-ce que AWS support FCM? SNS travailler avec GCM. Mais Google recommande d'utiliser FCM au lieu de GCM. Je n'ai pas trouvé AWS à l'appui de FCM.

2. Est-ce que AWS stocke des messages (ou des données) dans leurs bases de données même après avoir envoyé des notifications Push?

3.J'ai essayé de mettre la clé d’API FCM dans la plate-forme d’application SNS, elle affiche les paramètres non valides pourquoi?

83
Naroju

Vous pouvez maintenant accéder à votre console Firebase ( https://console.firebase.google.com/ ), sélectionnez votre projet, cliquez sur l’icône représentant un engrenage, choisissez les paramètres du projet, puis cliquez sur l’onglet Messagerie cloud ...

Vous verrez la clé de serveur héritée qui est la clé d'API GCM et vous aurez la possibilité de générer de nouvelles clés de serveur qui sont les versions FCM.

SNS acceptera les deux versions mais leur option de menu est toujours en cours de classement dans GCM

Voici une photo pour votre référence:

 enter image description here

Notez que vous pouvez "accidentellement" supprimer vos clés de serveur, mais la clé de serveur héritée n'est pas supprimable. De plus, si vous cliquez sur le bouton Ajouter une clé de serveur, vous obtiendrez une nouvelle clé de serveur AU-DESSOUS de la première, SANS AVERTISSEMENT! ... Beau travail Google;)

13
Reza

J'ai essayé d'utiliser la solution avec une charge de notification au lieu de données, mais je n'ai pas reçu de notifications Push sur le périphérique mobile. J'ai trouvé ce tutoriel https://youtu.be/iBTFLu30dSg avec des sous-titres en anglais expliquant comment utiliser FCM avec AWS SNS étape par étape et un exemple d'envoi d'envoi de notifications Push depuis la console AWS et de son implémentation sur php avec aws php sdk. Cela m'a beaucoup aidé.

5
Arbron

Encore une note supplémentaire à la bonne réponse de Nathan Dunn ... Comment envoyer des données avec la notification de SNS à Firebase.

Nous devons ajouter des données au Json (dans la notification):

{
    "default": “any value", 
     "GCM": "{ \"notification\": { \"body\": \”message body\”, \”title\”: \”message title \”, \"sound\":\"default\" } , \"data\" : {\”key\" : \”value\", \”key2\" : \”value\” } }”
}

Dans votre implémentation FirebaseMessagingService (exemple Xamarin)

public override void OnMessageReceived(RemoteMessage message)
{

    try
    {

        var body = message?.GetNotification()?.Body;
        var title = message?.GetNotification()?.Title;
        var tag = message?.GetNotification()?.Tag;
        var sound = message?.GetNotification()?.Sound;

        var data = message?.Data
        foreach (string key in data.Keys)
        {
            // get your data values here
        }

    }
    catch (Exception e)
    {
    }
}
4
Adys

Juste une note supplémentaire à la réponse de Nathan Dunn: pour ajouter du son, utilisez le message JSON suivant

{
"GCM": "{ \"notification\": { \"text\": \"test message\",\"sound\":\"default\" } }"
}
2

Amazon prend en charge FCM car tout le code précédent a été migré de GCM vers FCM. L'article ci-dessous explique en détail.

Article publié par Amazon

0
Epistemologist

Il m'a fallu un certain temps pour savoir comment envoyer la notification avec la bonne charge utile (publier dans le sujet). Je vais donc le mettre ici.

private void PublishToTopic(string topicArn)
{
    AmazonSimpleNotificationServiceClient snsClient = 
           new AmazonSimpleNotificationServiceClient(Amazon.RegionEndpoint.EUWest1);
    PublishRequest publishRequest = new PublishRequest();
    publishRequest.TopicArn = topicArn;
    publishRequest.MessageStructure = "json";
    string payload = "\\\"data\\\":{\\\"text\\\":\\\"Test \\\"}";
    publishRequest.Message = "{\"default\": \"default\",\"GCM\":\"{" + payload + "}\"}";
    PublishResponse publishResult = snsClient.Publish(publishRequest);
}    
0
Alexey

Pour répondre aux questions:

  1. AWS SNS prend en charge FCM.
  2. Non, AWS ne stocke pas les messages après l'envoi des notifications Push.

Pour un tutoriel détaillé sur la configuration de FCM avec SNS, lisez cet article.

0
N. S. Mehra