The payload is invalid because GCM does not support nested object in the data member. You can send the message with two property by registering for the following template:
{
"data": {
"message": "$(property1)",
"sender": "$(property2)"
}
}
In you Android receiver then you can retrieve your property with
intent.getStringExtra("property1");