100 votes

FCM avec AWS SNS

J'utilise AWS pour mon projet Android, je prévois d'ajouter le service de notification push pour mon projet avec AWS SNS .il y a quelques questions qui me préoccupent beaucoup. Je n'ai pas trouvé de questions à ce sujet, sauf une ou deux mais avec des explications peu claires.

1.Does AWS soutien FCM ? SNS travailler avec GCM . Mais Google recommande d'utiliser le FCM au lieu de GCM . Je n'ai pas trouvé AWS en soutenant FCM .

2.Do AWS stocker des messages (ou des données) dans leurs bases de données même après l'envoi de notifications push ?

J'ai essayé de mettre la clé d'api FCM dans la plateforme d'application SNS, elle montre des paramètres invalides, pourquoi ?

0 votes

SNS ne prend pas encore en charge FCM, il utilise une version obsolète de GCM. Où obtenez-vous la clé API ?

1 votes

Ce que j'ai essayé, c'est de mettre la clé api de FCM dans SNS et cela n'a pas fonctionné, après avoir lu la doc dans AWS (SNS) ils ont mentionné de mettre la clé du serveur. J'ai essayé et cela a bien fonctionné. Je suis capable d'envoyer des notifications push via SNS pour FCM. Je ne sais pas exactement pourquoi cela a fonctionné. Etes-vous sûr que SNS ne supporte pas FCM actuellement ?

0 votes

Il est exact que la clé du serveur est nécessaire pour envoyer des messages GCM (maintenant FCM). Du côté client (appareil mobile), la GCM et la FCM sont généralement les mêmes, de sorte que les deux recevront les messages de la manière attendue. Toutefois, certaines fonctionnalités de la GMC ne fonctionneront pas, par exemple la messagerie thématique.

200voto

Nathan Dunn Points 302

FCM est rétrocompatible avec GCM. Les étapes de la configuration de FCM sur AWS sont identiques à celles de la configuration de GCM sur AWS. Procédure de mise en place du MCG et (du moins pour le moment) FCM fonctionne de manière transparente avec GCM et SNS en ce qui concerne la configuration côté serveur.

Cependant si vous envoyez data vers l'appareil Android, elles ne seront pas traitées, à moins que vous n'implémentiez une service côté client qui s'étend FirebaseMessagingService . Le générateur de messages JSON par défaut dans la console AWS envoie data qui seront ignorés par votre application, à moins que le service susmentionné ne soit mis en œuvre. Pour contourner ce problème lors des tests initiaux, vous pouvez fournir un fichier notification la charge utile qui sera reçue par votre appareil (tant que votre application n'est pas au premier plan).

Il y a Instructions pour la migration GCM-FCM fourni par Google, mais les modifications à apporter se situent principalement du côté des applications.

Les étapes que vous devez suivre pour tester GCM/FCM sur votre application avec SNS sont les suivantes :

  1. Créer un Application de la plate-forme dans les SNS en choisissant Google Cloud Messaging (GCM) comme solution d'hébergement. Plateforme de notification push et en fournissant votre Clé API du serveur dans le Clé API champ.
  2. Sélectionnez l'application de la plate-forme et cliquez sur le bouton Créer un point d'accès à la plateforme bouton.
  3. Fournir l'ID d'instance ( Jeton de dispositif ) généré par votre application. Vous devez étendre le FirebaseInstanceIDService et remplacer le onTokenRefresh pour voir cela dans votre application Android. Une fois que vous ont fait cela Désinstallez et réinstallez votre application et votre jeton devrait être imprimé sur la console de débogage dans Android Studio au premier démarrage.
  4. Cliquez sur le bouton Ajouter un point de terminaison bouton.
  5. Cliquez sur le lien ARN de l'application de votre plateforme.
  6. Sélectionnez le point d'extrémité nouvellement créé pour votre dispositif et cliquez sur le bouton Publier vers le point de terminaison bouton.
  7. Sélectionnez le JSON Format du message et cliquez sur le bouton Générateur de messages JSON bouton.
  8. Saisissez un message de test et cliquez sur le bouton Générer JSON botón
  9. Maintenant vient la partie "gotcha".

Le message qui est généré par SNS sera de la forme :

{
"GCM": "{ \"data\": { \"message\": \"test message\" } }"
}

Comme nous l'avons mentionné précédemment, data seront ignorés si aucun service pour les recevoir n'a été implémenté. Nous aimerions tester sans écrire trop de code, donc à la place, nous devrions envoyer un message notification charge utile. Pour ce faire, il suffit de modifier le message JSON en lecture :

{
"GCM": "{ \"notification\": { \"title\": \"test title\", \"body\": \"test body\" } }"
}

(Pour plus d'informations sur le format JSON d'un message FCM, voir la section Documentation du FCM .)

Une fois que vous avez fait cela, assurez-vous que votre application n'est pas en cours d'exécution sur l'appareil, et appuyez sur la touche Publier le message bouton. Vous devriez maintenant voir une notification s'afficher sur votre appareil.

Vous pouvez bien sûr faire tout cela de manière programmatique via l'API Amazon SNS, mais tous les exemples semblent utiliser l'interface de l'API SNS. data Vous devez donc garder cela à l'esprit et générer une charge utile adaptée à votre cas d'utilisation.

2 votes

Excellente réponse, merci. Il est intéressant de noter que le json a une certaine profondeur en ce qui concerne les options de configuration - cf. developers.google.com/cloud-messaging/concept-options - bien que je n'aie pas testé de fonctionnalité spécifique au FCM.

0 votes

data Les messages fonctionnent bien en utilisant sns même si l'application client ne met pas en œuvre FCM mais GCM. Dans mon application, je n'ai pas fait la mise à jour vers FCM côté client mais FCM utilisant SNS fonctionne bien pour data les messages aussi. Cela ne devrait-il pas fonctionner ?

2 votes

SNS utilise GCM. Si vous utilisez le client GCM, il devrait se comporter normalement (jusqu'au moment où Google décidera de retirer GCM). Cette question concerne plutôt la prise en charge de la GCM sur AWS (qui est prise en charge via la rétrocompatibilité du côté de l'API Google).

14voto

Reza Points 181

Maintenant vous pouvez aller dans votre console firebase ( https://console.firebase.google.com/ ) sélectionnez votre projet, cliquez sur l'icône de l'engrenage et choisissez les paramètres du projet, puis cliquez sur l'onglet de la messagerie en nuage...

Vous verrez l'ancienne clé de serveur, qui est la clé API GCM, et vous aurez la possibilité de générer de nouvelles clés de serveur, qui sont les versions FCM.

SNS accepte les deux versions, mais leur option de menu les classe toujours dans la catégorie GCM.

Voici une photo pour votre référence :

enter image description here

Notez que vous pouvez supprimer "accidentellement" vos clés de serveur mais que la clé de serveur Legacy n'est pas supprimable. De plus, si vous cliquez sur le bouton d'ajout de clé de serveur, vous obtiendrez une nouvelle clé de serveur EN DESSOUS de la première, SANS AUCUN AVERTISSEMENT ! ...Bon travail Google ;)

7voto

Adys Points 66

Une remarque supplémentaire à l'excellente réponse de Nathan Dunn. Comment envoyer les données avec la notification de SNS à Firebase.

Nous devons ajouter des données au Json (à l'intérieur de la notification) :

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

Dans votre implémentation de 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)
    {
    }
}

0 votes

Où se trouve le jeton FCM ?

0 votes

Comment puis-je envoyer l'URL d'une image dans les données utiles ?

5voto

Arbron Points 111

J'ai essayé d'utiliser la solution avec une charge utile de notification au lieu de données, mais je n'ai pas reçu de notifications push sur l'appareil mobile. J'ai trouvé ce tutoriel https://youtu.be/iBTFLu30dSg avec des sous-titres en anglais sur la façon d'utiliser FCM avec AWS SNS étape par étape et un exemple de la façon d'envoyer des notifications push à partir de la console AWS et de l'implémenter sur php avec aws php sdk. Cela m'a beaucoup aidé.

3voto

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\" } }"
}

0 votes

Comment puis-je envoyer l'URL d'une image dans les données utiles ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X