4
votes

double notification push créée avec React Native + Expo + FCM

J'essaie de créer une application pouvant recevoir des notifications push. Les notifications push sont envoyées en utilisant AWS SNS et en utilisant le jeton FCM plutôt que le Token Expo . Les notifications ont été reçues, cependant, chaque notification a été reçue deux fois par la barre d'état système. J'ai essayé d'utiliser un téléphone sans expo installé, mais il a quand même reçu 2 notifications.

c'est ma demande de charge utile lors de l'envoi à SNS

{
"GCM": "{ \"notification\": { \"text\": \"test message\", \"tag\": \"testing\" } }"
}

Une idée de pourquoi cela se produit? Je suis prêt à fournir le code, mais je n'ai aucune idée de la partie que je dois mettre. Voici un exemple. Le nom de l'application est le même, mais la première notification contient le logo de l'expo. mise à jour : après l'envoi via la console Firebase, j'ai réalisé que la notification avec l'icône expo était la bonne.

MODIFIER : après avoir essayé d'envoyer une notification de console firebase, j'ai réussi à obtenir une seule notification. Le problème réside-t-il dans SNS?

EDIT [2] J'ai jeté un œil à mon journal Cloudwatch pour l'application de la plate-forme SNS. Et les métriques NumberOfMessagesPublished suggèrent qu'un seul message a été publié. Donc je suppose que cela élimine la possibilité que l'API SNS ait été appelée deux fois.

EDIT [3] J'ai essayé d'utiliser le package go-fcm pour envoyer notification à fcm directement. J'ai reçu 2 notifications même sans utiliser SNS. Mais pourquoi envoyer une notification directement à fcm a une sortie différente de celle de la console Firebase?

entrez la description de l'image ici

MISE A JOUR

Enfin, j'ai réussi à le faire fonctionner en définissant un champ tag dans le champ notification pour éviter les doublons.

Donc, la charge utile est comme ceci:

{
"GCM": "{ \"notification\": { \"text\": \"test message\" } }"
}

Cependant, cela ne répond toujours pas à la question de savoir pourquoi j'ai eu les doublons :(


9 commentaires

peut provenir du FCM Le contenu du message est envoyé deux fois avec le message et le contenu du message, utilisez n'importe qui pour gérer / afficher la notification.


comment avez-vous résolu cela? J'utilise actuellement AWS SNS pour envoyer la notification push


partagez votre gestionnaire de notification pour fcm comme exemple


Je n'ai actuellement aucun gestionnaire de notification dans mon code, je viens d'enregistrer mon jeton FCM à partir de yield Notifications.getDevicePushTokenAsync () d'expo, puis de l'enregistrer dans AWS SNS , puis envoyez le message depuis la console


Définissez-vous correctement le jeton de notification? Avez-vous enregistré plus d'un jeton en raison peut-être de la réinstallation de l'application pendant le développement.


@RichardLeMesurier J'ai associé un userID à un SNS Endpoint qui est associé à 1 FCM Token . Je pense donc que ce ne sera pas un doublon par utilisateur. Et après des tests supplémentaires, j'ai essayé d'utiliser FCM directement dans le tableau de bord Firebase au lieu de SNS et la notification n'était pas dupliquée lorsque j'utilise le tableau de bord Firebase.


Spontanément, je pense que si vous recevez deux notifications, vous avez envoyé deux notifications


Face au même problème. Notez qu'une notification a l'icône expo et l'autre une icône d'application. L'utilisation de la balise ne conserve que celle avec l'icône expo. J'ai ouvert un problème github ( github.com/expo/expo/issues/4450 )


De plus, l'utilisation d'une balise signifie qu'il n'y aurait qu'une notification à la fois (la nouvelle remplace l'ancienne si la balise est la même). Si vous ne voulez pas que ce soit le cas, assurez-vous de ne pas coder en dur une balise et utilisez plutôt quelque chose comme un horodatage.


3 Réponses :


0
votes

Votre application est-elle créée et installée sur votre téléphone?

Je pense que le problème vient du fait que vous avez installé Expo et "Votre application".

Sinon, je pense que vous avez dupliqué le jeton Expo. N'oubliez pas que la meilleure pratique pour les notifications push consiste à mettre à jour le jeton Expo chaque fois que vous lancez votre application.

Vous ne pouvez pas tester vos notifications avec l'outil expo. https://expo.io/dashboard/notifications


1 commentaires

Salut Christobal, Merci pour votre réponse! Oui, mon application expo est installée. Cependant, j'ai essayé d'utiliser un téléphone sans expo et il reçoit toujours une notification en double. Pour le jeton, j'utilise FCM directement avec AWS SNS, donc je n'utilise pas le jeton d'Expo.



0
votes

Une seule application installée, je pense que c'est parce que Expo capture la notification et en crée une nouvelle personnalisée.

J'envoie une notification avec FCM.

L'utilisation d'une balise "corrige" le problème de la double notification.


1 commentaires

Je voulais juste répéter - l'utilisation de la balise signifie qu'il n'y aurait qu'UNE notification à la fois (la nouvelle remplace l'ancienne si la balise est la même). Si vous ne voulez pas que ce soit le cas, assurez-vous de ne pas coder en dur une balise et utilisez plutôt quelque chose comme un horodatage



0
votes

Définissez l'attribut "tag" dans la partie "notification" de votre requête JSON.

{
  "to": "xxxxxxxxxxxxxxx",
  "notification": {
      'title': "YOUR TITLE",
      "tag": "GENERATED_UNIQUE_ID",
      'body': "YOUR DESCRIPTION",
      "content_available": "true"
  }
}


0 commentaires