No, that is not a valid assumption at all.
FCM does not know what constitutes a “message” according to your rules - so it cannot tell where you think the message should end.
It therefore gathers bytes according to its own rules - which are the only ones it can know - and it tells you how many bytes it has collected.
It is up to you to interpret those “chunks” according to your own message rules.

No - not necessarily.
The FCM data handler tells you precisely how many characters it is passing to you - you have to design your handler to accept one or more bytes at a time.