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

도와주세요 ㅠ gcm registration id가 주기적으로 바뀌나요

0 추천
gcm id와 구글계정을 서버에서 받아 db에 저장하는데요.

몇몇 구글계정이 두개의 gcm id가 등록됐습니다.

(300개중 10여개가 이중으로 중복)

2월 17일에 등록됐던 구글 계정인데 2월 22일에 똑같은 구글 계정으로 바뀐 gcm id가 등록되는 겁니다.

폰이 여러개인 사람이 있을 것 같아 구글계정당 1씩만 등록되게 처리하지는 않은 상태이고요.

gcm id가 업데이트 된 경우는 반환되는 gcm id로 수정되게 처리는 해놓은 상태인데 도대체 왜 이런 경우가 발생할까요

가장 큰 문제는 푸시를 날리면 중복된 reg_id그러니까 2개 gcm id 모두 성공으로 나온다는 겁니다.

=> 이럴 경우 유저에게 두번 푸시가 날라가는 건 아닐까요?

나중에 등록된 reg_id로 등록되게 해야하나요. 그럴경우 2개의 스마트폰을 가진 사람은 어떻게 해야하죠.
익명사용자 님이 2015년 2월 22일 질문

4개의 답변

0 추천
앱을 지우면 gcmid가 새로 생성될겁니다.

이 과정에서 gcmid가 바뀌고 새로운 값을 던지니, gcmid를 업데이트 해줘야겠죠.

 

앱을 지운게 아닌, 두대의 단말기에서 한개의 구글계정을 사용한다면, 두 gcm이 다 등록되야할 것이고.

위방법처럼 한개의 구글계정에 한개의 gcmid만 등록하게 된다면 최근 이용한 핸드폰 단말기로 푸쉬가 날아가겠네요.
익명사용자 님이 2015년 2월 22일 답변
답변 감사합니다. 앱을 삭제하면 처음은 성공하고 두번째 푸시를 날릴경우 Notregist.. 를 반환해서 전의 regid는 삭제하도록 로직을 해놨는데요. 문제는 제가 말한 경우는 전의 regid로도 푸시가 계속 성공한다는 겁니다. 6개 기기에서 테스트도해봤고요.
0 추천
가족들 스마트폰 가져다 직접 시험해보세요.
익명사용자 님이 2015년 2월 22일 답변
0 추천
gcmid를 받아서 서버에 저장하기전에

기존에 계정이 있는지 / gcmid 가 있는지 확인한다음

계정이 있는데 다른 gcmid가 올라왔다면 add 하지않고 업데이트하심 되실것으로...
nicehee (73,100 포인트) 님이 2015년 2월 22일 답변
답변감사합니다. 기존에 gcmid가 있으면 등록은 안되게 해놨는데 기존 계정이 있을 경우는 등록되게 해놨습니다. 폰이 두개인 사람이 있을 경우를 생각해서요. 혹은 부모님들은 자녀 구글 계정을 쓰기도해서요. 요점은 주기적으로 gcmid가 바뀌는거라면 두 gcmid로 발송해서 성공이라 뜬다면 gcm이 중복으로 날라가는 경우는 없겠죠?
0 추천
간단하게 설명 드리자면.....

regid는 언제 변할지 아무도 모릅니다~~!

즉 바뀔시에 업데이트 해줘야 하겠지요~~!

그리고 gcm에서 메시지를 보낼때 구글계정은 유저판별의 고려대상이 전혀 아닙니다~~~!

즉 구글 계정이 같지만 regid가 다르다면 한 디바이스에 여러개의 푸쉬가 전달 되지 않습니다~~!

즉 현재 매우 잘 처리 해놓으신것으로 사료 됩니다.
ThisPlus (46,920 포인트) 님이 2015년 2월 23일 답변
답변 정말 감사합니다. 제 글을 자세히 읽고 적어주신 것 같은 느낌이 드네요. regid가 변한다고 하셨는데 그럴경우 gcm 서버에서 canonical_ids (registration_id)가 반환된다고 알고 있습니다. 그 반환될 경우 regid가 db에서 업데이트 되도록 해줬고요. "구글 계정이 같지만 regid가 다르다면 한 디바이스에 여러개의 푸쉬가 전달 되지 않습니다"이 부분을 눈여겨 봤습니다. regid는 고유의 값이겠죠. 님 말씀대로라면 한 구글계정으로 여러개가 생성되도 발송에는 큰 문제가 없으니까요. "구글계정은 유저판별의 고려대상이 전혀 아닙니다" 이부분도 아주도움이 되었고요. 주기적으로 gcmid가 바뀌는게 맞나봅니다. 그런데 그렇다면 이전에 발급받은 gcmid는 canonical_ids를 결과로 반환해야하는데 이부분은 아직도 미스테리네요. 테스트를 더해봐야겠습니다..
...