카톡에서 보여지는 사진, 비디오, 파일 같은경우는 gcm에 담겨져서 보내는 방식이 아니라, 파일 서버 상에 해당 파일을 업로드 하며 수신받는쪽에서 해당 파일을 받는 형식입니다.
메신저에서 사용하게 되는 gcm은 단순히 클라이언트 끼리 이루어지기 보다는 중간에 서버가 같이 동작을 하는경우가 많습니다.
클라이언트 (gcm 발송 요청)-> 서버(gcm 발송) -> 클라이언트
해당 기능들을 구현하기 위해서는 클라이언트 뿐만 아니라 서버까지 같이 개발이 되어야 합니다.
1. 일반적인 메신저의 경우에는 클라우드 스토리지에(자체 클라우드 스토리지가 있거나, 아마존에서 서비스하는 s3 나 kt 서비스하는 ucloud)에 전송하고자 하는 파일을 올리고 상대방에게 보내는 메시지에 해당 이미지를 받을수 있는 url을 보내, 상대방이 메시지 수신 후 해당 이미지 파일을 다운 받는 형식으로 되어 있습니다. 해당 기능을 구현하려면 클라이언트에서는 스토리지에 파일을 업로드 하는 기능 과 파일을 다운로드 하는 기능, 클라우드 스토리지 가 필요하겠네요.
2. 1번과 같은 방식으로 진행을 하면 되겠습니다.
3. 일반적으로 메시지를 수신받고 읽게되면 verify메시지라고 하여 다시 서버에게 메시지를 날리게 되어있습니다. 그렇게 되면 서버는 다시 송신쪽에 메시지를 전송하게 되어 있습니다.