쎄미님 답변대로 base-64로 인코딩하여 보낸다음 디코딩하는게 이론상으론 가능하지만
GCM이 한번에 보낼 수 있는 글자수가 .. String일때.. 정확히 기억안나는데 몇백자 입니다..200이었나 400이었나..
base-64로 코딩하면 바이트수로만 봤을때.. 2MB 이미지 한장이면 말이죠..
2MB = 2000KB = 2000000Byte 인데... Base-64로 인코딩하면 이보다 훨씬 적지만
어느정도 크기가 있는 이미지의 경우엔 글자수제한때문에 도중에 짤려서 오류나더군요;
GCM으로 다 전송 못합니다... 지금 제가 만드는 프로젝트에서도 이 문제때문에
그냥 파일서버 구축하고 이미지 링크 보내는 식으로 대체했습니다.
굳이 파일서버 없이 GCM으로 보내시겠다면.. 나눠서 보내는 방법도 있습니다만..
GCM은 메세지의 완벽한 전송을 보장하지 않습니다..-_-;; 요즘 시연중인데 가끔 전송안되는경우가 보이더군요..
결론 : 파일서버 구축해서 http 주소 보내면 됨.