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

GCM 푸시 API KEY 관련

0 추천

안녕하세요 : )

 

5개월전쯤에 푸시기능이 탑재된 앱을 하나 만들었는데 만들고나서 한동안 안보내다가 다운수가 좀 올라서 보내볼까 하고 보냈는데 알람이 이상하게 옵니다; 

 

알람이 1개만 와야되는데 무작위로 5~6개는 오네요; 

 

Q1 : 데이터베이스에 regID만 저장시키는데 하나의 폰에서 A라는 앱을 깔아서 ID_A 를 얻고 지웠다가 다시 깔아서 ID_B를 얻은 상태에서 푸시를 보내면 그 폰에 푸시가 2개가 오는건가요?

 

예전엔 분명 안그랬는데 어제 갑자기 이러네요; 만약 그렇다면 해결책은 기기고유의값이랑 같이 저장시키는거겠네요 ㅠㅠ

 

그리고 또 문제가 푸시를 보내면 예전에 보낸 푸시의 데이터가 보내집니다; 

Q2 : 뭔소리냐면 어제 '9/13 좋은하루 되세요 :)' 라는 푸시를 보내고 오늘 '9/14 좋은 한가위 되세요 :) ' 라는 푸시를 보냈는데 어제는 정상적으로 갔는데 오늘 결과가 '9/13 좋은하루 되세요 :)' 라는 어제의 푸시가 나타납니다; 

 

이건 도대체 왜이런건가요?

 

+)똑같은 코드로 적용한 다른 앱들이 있는데 이 앱들은 정상적으로 잘 작동합니다 ㅠㅠ (코드의 오류는 아닌것 같습니다)

 

그리고 결론적으로 문제를 해결하려고 구글 개발자 센터에서 API KEY를 이것저것 만져보는데 서버키를 새로 만들어서 그걸로 해봤는데 아예 푸시 자체가 안보내지더라고요; 중요한건 예전 푸시 서버키를 지웠다는겁니다 ㅠㅠ 

 

푸시 보내는 건 php 로 했고 코드는 http://berabue.blogspot.jp/2015/03/android-gcm-server-php.html 를 참고했습니다.

익명사용자 님이 2016년 9월 14일 질문

1개의 답변

0 추천
앱 설치하여 발급되는 GCM regID를 유심히 보시면 같은 기기라도 새로 설치할때마다 바뀌는것을 보실 수가 있습니다. 새로 설치하여 새로운 regID로 발급 받았다고 해도 기존 regID로 push를 보냈을때 정상적으로 수신이 되지요.

쉽게 말해 "A"라는 단말에 최초 설치시 "1"이라는 regID를 발급후에 또 다시 "A"단말에 새로 설치하여 "2"라는 regID를 발급받아도 "1","2" 둘다 "A" 단말을 타겟으로 하여 push가 전송된다는 말이지요.

단말의 deviceID로 구분하여 서버에서 기존 regID를 제거하고 덮어 씌우는식으로 하셔야 합니다.

또한, 구글의 rest API를 사용하여 GCM push를 보내면 응답 값에 각 regID에 해당하는 상태값을 리턴해 주는것으로 알고 있습니다. 이를 이용하여 현재 해당 regID의 유효성을 확인할 수가 있습니다. 이 유효성을 확인하여 중복처리를 할 수가 있는데 GCM send를 할때 "dry_run"으로 보내면 실제로 push가 전송되지는 않고 regID의 유효성만 확인 할 수가 있어 이를 활용하면 서버에서는 regID만 받아도 중복처리가 가능할 수가 있지요. 자세한 내용은 구글에 "dry_run" 관련해서 찾아보면 많은 자료가 있으니 확인해보세요.
Development Guy (70,570 포인트) 님이 2016년 9월 19일 답변
...