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

gcm 중복 메시지 문의

0 추천
우선 우리앱은 멀티 디바이스를 지원하며, 등록한 장치에 모두 푸시를 보내게 됩니다.

1. A 유저가 하나의 장치에서 우리앱을 설치->삭제를 10번 하면 reg_id 가 10개 생성 되어 디비에 저장 되었습니다.

2. 그후 A 유저의 10개 reg_id에 푸시를 보냈습니다. (gcm ids 에 배열 형태로)

3. canonical_ids가 9개이며, 새로운 regid가 xxx라며 gcm이 리턴을 줍니다.

4. A유저는 하나의 장치에서 중복된 10개의 푸시메시지를 받았습니다.

 

여기서 문제는 4번입니다.  유저가 하나의 장치에서 여러개의 regid 를 생성했다는것을 알 수 있는 시점이

"푸시를 보낼때" 라는 것 입니다.

여러분들은 이런 경우 어떻게 해결 하시나요?

도움 부탁드립니다.
박봉배 (730 포인트) 님이 2015년 4월 9일 질문

2개의 답변

0 추천
 
채택된 답변
regid를 서버에 등록할때 디바이스 id도 같이 보내서 db에 동일한 디바이스 id의 값이 있을때는 삭제후 다시 쓰거나 update하는 방식으로 변경하는건 어떨까요.

삭제하거나 update이전의 regid값은 푸시 서비스에서도 삭제처리 하도록 구현하구요,,

 

요 방법이 안되면,, 클라이언트에서 지정한 수 초 안에 동일한 메세지가 들어오면 무시하도록 처리해도 될듯 합니다.
이드로이드 (22,930 포인트) 님이 2015년 4월 9일 답변
박봉배님이 2015년 4월 9일 채택됨
도움 주셔서 감사합니다 ^^
0 추천
우선, 한 사람이 10개의 푸쉬를 받는 것이 아닙니다.

한 기기 내에서 삭제 후 재설치를 하면 새로운 reg_id가 생성되며, 서버에서만 업데이트를 안해주기에 10개까지 저장이 된거지요.

 

멀티 디바이스를 지원하신다니 들어오는 reg_id는 무조건 저장하셔야할 듯 하고.

전송 후 canoncial_ids 리턴되는 값들을 db에서 지워주시면 되겠지요.

 

전송전에 체킹하신다면, regid와 기기 고유값을 받아 기기마다 regid를 저장받고, 업데이트 해주는 방식으로 하시면 될 거 같습니다.
개발자초심 (21,220 포인트) 님이 2015년 4월 9일 답변
도움 주셔서 정말 감사합니다 ^^
...