web-dev-qa-db-fra.com

Erreur FCM Firebase: 'InvalidRegistration'

J'essaie actuellement d'envoyer un PushNotification à un Device Group en utilisant FCM à l'aide de Firebase Cloud Functions mais une fois la notification envoyée, elle revient avec le code 200 mais avec échec:

SUCCESS response= {
multicast_id: 8834986220110966000,
success: 0,
failure: 1,
canonical_ids: 0,
results: [ { error: 'InvalidRegistration' } ] 
}

Voici le code que j'utilise pour envoyer cette notification ... que me manque-t-il?

const options = {
    method: 'POST',
    uri: 'https://fcm.googleapis.com/fcm/send',
    headers: {
       'Authorization': 'key=' + serverKey,
    },
    body: {
       to: groupId,
       data: {
        subject: message
       },
       notification: {
         title: title,
         body: body,
         badge: 1,
        },
       content_available: true
    },
    json: true
};

return rqstProm(options)
    .then((parsedBody) => {
        console.log('SUCCESS response=', parsedBody);
    })
    .catch((err) => {
        console.log('FAILED err=', err);
    });

Où les valeurs JSON title, body, subject, message sont String

7
John

Il existe un moyen plus simple d'envoyer un message à un groupe d'appareils à partir d'une fonction cloud. Utilisez admin.messaging (). SendToDeviceGroup () . Un exemple de code et des instructions se trouvent dans ce guide .

Je pense que votre méthode actuelle échoue car il y a un problème avec la clé de notification de groupe fournie dans groupId. Il doit s'agir de la valeur de clé de chaîne renvoyée lors de la création du groupe de périphériques. Les codes d'erreur sont répertoriés dans ce tablea . Pour 200/InvalidRegistration, il est dit:

Vérifiez le format du jeton d'enregistrement que vous transmettez au serveur. Assurez-vous qu'il correspond au jeton d'enregistrement que l'application cliente reçoit en s'inscrivant aux notifications Firebase. Ne tronquez pas et n'ajoutez pas de caractères supplémentaires.

3
Bob Snyder

Dans mon cas, j'envoyais des notifications au sujet ("topics/my-topic "). Il me manquait l'ajout de / au début du sujet, j'ai donc eu le même problème. SO topic devrait être /topics/my-topic.

Peut-être que cela aide !!

8
Sunil Garg

Un jeton d'enregistrement est lié à un certain groupe d'expéditeurs. Lorsqu'une application cliente s'inscrit pour FCM, elle doit spécifier quels expéditeurs sont autorisés à envoyer des messages. Vous devez utiliser l'un de ces ID d'expéditeur lors de l'envoi de messages à l'application cliente.

Tout ce que vous devez faire est d'ajouter un en-tête http "project_id" avec votre identifiant d'expéditeur.

0
user3824246