问题
I'm testing push GCM via Fiddler
Headers:
User-Agent: Fiddler
Authorization: key=AIzaSyAkXfcuLLCZ-5n18wwO6XeJ13g-z9ja
Host: android.googleapis.com
Content-Length: 286
Body:
{"registration_ids":["APA91bHyn8YHcH_vSuOo7_A0PMgF5SU1K0FebOFGKXYTqpN5x4eD0tVBvzQLn749TVcczN5gSjB1wqf5AzYfxFI_qskA1Nzipf-9MfdEom1PI1vkFqKIg9B8vZvPLOLozE7jaRzELuyDzpFRbO3Xh5lT-KDA"],"collapse_key":"8b990f5a-78fc-4bad-b242-ffc740a750fb","data":{"message":"message to device"}}
I've got a error
Error=MissingRegistration
Where is my problem? All ids are correct.
回答1:
You probably forgot to specify the content type in the header to be JSON.
Content-Type: application/json
If Content-Type is omitted, the format is assumed to be plain text.
And for plain text the registration ID is passed in a parameter called registration_id
instead of registration_ids
, which explains your MissingRegistration
error.
回答2:
For the new cloud Message, when you want to send a dwonstream message from the server, you need to use "to" to declaim the target registration id.
like below :
https://gcm-http.googleapis.com/gcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
{ "data": {
"score": "5x1",
"time": "15:10"
},
"to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..."
}
回答3:
For Firebase, You can get info from https://firebase.google.com/docs/cloud-messaging/http-server-ref#error-codes
Check that the request contains a registration token (in the registration_id in a plain text message, or in the to or registration_ids field in JSON).
回答4:
Swift 5
In my case receiver token was missing and after put the fcm receiver token its work fine for me
来源:https://stackoverflow.com/questions/22486192/gcm-error-missingregistration-sending-messages-via-json