마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

fcm xmpp server 질문있습니다. 한번만 3봐주세요..

0 추천
제가 이해하기로는

1.Client 에서 fcm서버에서 토큰을 발급받고 그 토큰을 서버에(Apache server) 저장한다.

2. 상대에게 메세지를 보내면(upstream) fcm 서버에서 xmpp로 요청을 보내고 xmpp 에서 client 쪽으로 알림을 보낸다.

대충 이런식인데 제가 이해가안되는게

앱 안에 xmpp code를 같이 넣어줘야되는지 즉, 클라이언트 코드랑 xmpp서버 코드를 같이 만들어야되는지

그리고 토큰 저장 서버(apache)가 있는데 xmpp 서버도 따로 만들어줘야하는지

그리고 fcm 문서에 보면

Firebase  문서 

메시지를 보내려면 앱 서버에서 JSON 키-값 쌍으로 구성된 HTTP 헤더와 HTTP 본문을 포함하는 POST 요청을 만듭니다. 헤더 및 본문의 옵션에 관한 자세한 내용은 앱 서버 보내기 요청 작성을 참조하세요.

XMPP 서버 프로토콜 구현

FCM 메시지의 JSON 페이로드는 HTTP 프로토콜과 비슷하지만 다음과 같은 예외가 있습니다.

여러 수신자가 지원되지 않습니다.FCM이 필수 항목인 message_id 필드를 추가합니다. 이 ID는 XMPP 연결에서 메시지를 고유하게 식별합니다. FCM의 ACK 또는 NACK는 message_id를 사용하여 앱 서버에서 FCM으로 보낸 메시지를 식별합니다. 따라서 이 message_id는 발신자 IDXMPP는 서버 키를 사용하여 FCM에 대한 영구 연결을 인증합니다. 자세한 내용은 보내기 요청 인증

일반적인 FCM 메시지 외에도 JSON 개체의message_type 필드로 표시되는 관리 메시지가 전송됩니다. 값은 'ack', 'nack' 또는 'control'일 수 있습니다. 아래 형식을 참조하세요. 알 수 없는message_type이 있는 모든 FCM 메시지는 서버에서 무시될 수 있습니다.

앱 서버가 FCM에서 수신하는 각 기기 메시지마다 ACK 메시지를 보내야 합니다. NACK 메시지는 보낼 필요가 없습니다. 메시지에 대한 ACK를 보내지 않으면 이 메시지가 먼저 만료되지 않는 한 다음에 새로운 XMPP 연결이 설정될 때 FCM이 메시지를 다시 보냅니다.

또한 서버에서 기기로 전송한 각 메시지별로 FCM에서 ACK 또는 NACK를 보냅니다. 둘 다 수신되지 않았다면 작업 중에 TCP 연결이 종료되었으며 서버에서 메시지를 다시 보내야 한다는 의미입니다. 자세한 내용은 흐름 관리를 참조하세요.

모든 메시지 매개변수의 목록과 이를 지원하는 연결 서버를 알아보려면 프로토콜 참조를 확인하세요.

요청 형식페이로드가 포함된 메시지 - 알림 메시지

다음은 알림 메시지의 XMPP 스탠자입니다.

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGISTRATION_ID",  // "to" replaces "registration_ids"
     "notification": {
        "title": "Portugal vs. Denmark”,
        "body”: "5 to 1”
      },
      "time_to_live":"600"
}

  }
  </gcm>
</message>

이런식으로 코딩이되어있는데 이건 어디서 작업 해줘야하는건가요?
알파고 (4,320 포인트) 님이 2018년 3월 5일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...