J'ai un problème avec les notifications silencieuses sur iOS.
Lorsque ma demande est en arrière-plan, je ne reçois pas de notification silencieuse envoyée par FCM. Mais si j'essaie d'envoyer directement à APNS, la notification est reçue avec succès.
Voici le JSON envoyé à FCM:
{
"to" : "<token>",
"priority": "high",
"content_available": true,
"data" : {
"<key>" : "<string>",
"<key2>" : "<string>"
}
}
Voici le JSON envoyé directement à APNS:
{
"aps": {
"content-available": 1
},
"<key>": "<string>",
"<key>": "<string>"
}
J'ai déjà essayé de supprimer la clé "Priority" car j'ai vu quelqu'un dire que je ne devrais pas définir la priorité si "content_available" est déjà défini. Ça n'a pas marché.
Supprimer "notification" paire de valeurs clés et ajouter "content_available": true
Il ressemblera à ceci
{
"to" : "...",
"priority": "high",
"content_available": true,
"data" : {
....
}
}
Cela devrait en faire un APNS silencieux et vous devez le gérer avec la méthode déléguée APNS correspondante.
Vous devrez gérer cela par le biais des délégués Reportez-vous à cette documentation Firebase pour plus de détails: https://firebase.google.com/docs/cloud-messaging/concept-options
J'ai trouvé une solution de contournement. J'ai mis une valeur vide pour "son" dans le champ "notification" et les notifications silencieuses sont livrées même lorsque l'application est en arrière-plan.
{
"to" : "...",
"priority": "high",
"notification": {
"sound": ""
},
"data" : {
....
}
}
Mon intuition est que Apple ne permet pas les notifications silencieuses avec une priorité "élevée" et en quelque sorte "notification": {"sound": ""} trompe l'APNS que cette notification n'est pas silencieuse .
Je travaillais sur la notification Push Firebase silencieuse en utilisant nodejs. Lorsque j'ai essayé le code ci-dessous, cela fonctionnait bien. Lorsque j'ajoutais "priorité": "élevé" et "contenu_disponible": vrai, cela donnait l'erreur ci-dessous.
Travaillé sous le code
const admin = require('firebase-admin');
const serviceAccount ="...."; //service account path
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
let fcmToken = "...."; // Your token
let message ={
"token": fcmToken,
"data": {
"updateApi": "activity"
}
}
admin.messaging().send(message)
.then((response) =>{
console.log('Successfully sent notification:', response);
})
.catch((error) =>{
console.log('Error while sending notification:', error);
});
Erreur lorsque j'ai ajouté les priorité et content_available dans l'objet message
{ code: 'messaging/invalid-argument',
message: 'Invalid JSON payload received. Unknown name "priority" at \'message\': Cannot find field.\nInvalid JSON payload received. Unknown name "content_available" at \'message\': Cannot find field.' },
codePrefix: 'messaging' }