This is what was said in the GCM document,
A JSON object whose fields represent the key-value pairs of the message payload data. If available, the payload data will be included in the intent as application data, with the key being an alternate name. For example, "data": {"score": "3x1"} will result in an additional named intent whose value is a 3x1 string.
There is no limit to the number of key / value pairs, although there is a limit to the total message size (4kb). Values can be any JSON objects, but we recommend using strings, because the values will still be converted to strings in the GCM server.
If you want to include objects or other non-string data types (for example, integers or booleans), you need to convert to a string yourself. Also note that the key cannot be a reserved word (from or any word starting with google.).
To complicate matters, there are some reserved words (such as collapse_key) that are technically permitted in the payload data. However, if the request also contains a word, the value in the request will overwrite the value in the payload data. Therefore, the use of words that are defined as field names in this table is not recommended, even when they are technically permitted. Not necessary.
Shaolin Mar 29 '13 at 9:17 2013-03-29 09:17
source share