도와주세요. 구체적으로 사례를 적어봅니다.
실제 gcm 푸시 서버를 구축해보신 분이면 잘 아실것 같은데요.
(현재 php, mysql로 구성했고. php curl로 통신하고 있습니다.)
-증상-
400개중 / 7개 계정이 registration_id (regid)가 2개씩 등록되고 있습니다.
id 구글계정 regid
1 aaa111@gmail.com APA91bF...4A <==
2 diek23@gmail.com APA91bH...og
3 ff3133@gmail.com APA91bG...Eg
...................................
...................................
12 aaa111@gmail.com APA91bH..._Q <==
13 dffff3@gmail.com APA91bG...4g
...................................
...................................
이럴 경우 단말기가 2대라는 것을 예상할 수 있는데요.
400명 중 1~2명정도라면 이해가 되지만
7명이나 단말기가 2개라는 것은 이해가 되지 않습니다.
그렇다면 제가 잘못 처리했거나 놓친 부분이 있을거 같은데요.
아무튼 문제는 두regid에 푸시를 날리면 모두 success가 뜬다는 겁니다.(위에서 1번과 12번)
저와 동일한 증상을 겪으신 분이 있는가요.
7명이나 단말기가 2개라는 것이 맞을까요?
한 단말기에 두번 연속 푸시(알림)가 날라가는 문제는 없겠죠?
- 처리한 로직 -
현재,
등록시 db에 registration_id가 있으면 중복 등록되지 않도록 처리
responsec(result값) 처리
canonical_ids 기존 등록된 regid를 리턴되는 regid로 수정
NotRegistered 앱이 삭제된 경우이므로 regid 삭제
Unavailable 유효하지 않은regid이므로 regid 삭제
- 추가내용 -
"OS 가 업데이트 되었을 때나, Factory Reset(공장초기화) 이 되었을 때도 다시 등록해야 한다.
App 을 update 할 때마다 device 를 다시 등록해줘야 한다."
간혹 gcm 서버에서 regid를 갱신하는 것 같습니다. 그렇다할지라도 전에 쓰던 id는 canonical_ids를
반환하기에 문제가 없을 것으로 보이는데요.