web-dev-qa-db-fra.com

pousser la notification silencieuse via GCM vers Android / IOS

Je cherche à envoyer une mise à jour d'état à une application, qui peut (ou non), être silencieuse.

Par exemple, si l'utilisateur reçoit un nouveau message d'un de ses amis, je veux envoyer un tel message et pouvoir afficher une alerte sonore.

Mais dans le cas silencieux, je veux que l'utilisateur ne remarque pas une telle notification. il doit être collecté par l'application; Par exemple, si mon utilisateur a deux appareils et qu'il change son nom dans l'un d'eux, je veux envoyer à l'autre appareil (qui est en veille) une mise à jour silencieuse du nom, qui devrait déclencher un changement (être envoyé à l'application) en arrière-plan.

D'après ce que j'ai lu, cela est en fait possible, mais je suis assez confus quant à la façon dont c'est réellement ou comment cela devrait être fait, et il y a parfois des contradictions. En tant que développeur backend, je peux tout faire, mais je dois m'assurer que cela fonctionne pour les gars frontend.

Voici quelques sujets pertinents:

Arrière-plan silencieux Push sur iOS et Android

Notifications push sans alerte

notification push iPhone sans alerte

Android Silent Push

15
Onza

Android:

MISE À JOUR: Nouvelle documentation pour FCM: https://firebase.google.com/docs/ cloud-messaging/concept-options # notifications_and_data_messages

Tant que vous n'incluez pas de balise notification dans votre charge utile et que vous y mettez une balise data, vous obtenez une notification silencieuse

cet exemple afficherait une notification

{ "notification": {
    "title": "Portugal vs. Denmark",
    "text": "5 to 1"
  },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
}

cela ne montrerait pas une notification

{
   "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
   "data" : {
     "Nick" : "Mario",
     "body" : "great match!",
     "Room" : "PortugalVSDenmark"
   },
 }

allez ici pour en savoir plus https://developers.google.com/cloud-messaging/concept-options#notifications_and_data_messages

iOS

ajoutez la balise contentAvailable: 1 à votre charge utile json et vous recevez une notification silencieuse

c'est si simple

35
tyczj

La réponse acceptée pointe vers une documentation obsolète.

Vous devriez utiliser ceci à la place: documentation Firebase

Le message de données ressemble à ceci:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

Et le message de notification:

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }
}

J'espère que cela fera que d'autres personnes éviteront le mal de tête que j'ai eu de la réponse acceptée.

5
Kristian Barrett