In case you're following my FCM payload saga, here's a happy ending that covers most usecases with one payload which will allow you sending basic FCM messages with data and notification in them. And such messages are universal and will produce the same result on both iOS and Android. On iOS this will work out of the box, whereas on Android a small hack is neccessary to be added to the app itself.
With the payload below, you'll be able send a unified FCM message to iOS and Android and on both platforms you will receive a notifcation pop-up/heads-up message as well as pass some data to the callback method of the app which then may use it to do something meaningful in the background:
{
"message":{
"token":"<device registration id>",
"apns":{
"payload":{
"aps":{
"content-available":1,
"alert":{
"title":"title",
"subtitle":"subtitle",
"body":"body"
},
"badge":7,
"sound":"default"
}
}
},
"data":{
"account":{
"first-name":"Igor",
"last-name":"Z"
},
"androidTitle":"title",
"androidBody":"body"
}
}
}
iOS will use the apns
part to display the notification, and pass data=>account
to your app for further use. And essentially ignore the androidTitle
and androidBody
part.
Android on the other hand will ignore the whole apns
branch, pass data=>account
to the app as well and with the small hack mentioned above use androidTitle
and androidBody
to display a local notification.
That's a lot of power in a single payload. I hope you find it helpful 🙂