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

gcm push 알림 기능 구현 시 regID 관리 방법과 그 외 몇 가지 질문 부탁드려요.

0 추천

안녕하세요... 모르는 게 참 많아서 질문 드리게 되었네요. 질문이 길지만 꼭 좀 읽어보시고 아는 내용 있으시면 조금이라도 답변 부탁드려요. 감사한 마음으로 질문 드리겠습니다!

 

이미 구현되어있는 기존의 프로젝트에 push plugin을 적용하 push 알림 기능을 추가해야합니다.

구글 gcm 서비스 서버 / 3rd party app 서버 / 사용자 단말기

이 세 가지 구조로 이루어진 push 서비스를 만들 계획입니다.

 

개발환경은 Node.js, 폰갭 프레임워크입니다. 안드로이드와 아이폰 플랫폼으로 두 기기에서 돌아가게 되어있구요, 안드로이드는 안드로이드 스튜디오, 아이폰은 Xcode에서 개발중입니다..

 

손을 댄 지 얼마 안되어서 지금은 구글링해가며 폰갭 + 안드로이드 스튜디오 + Node.js 환경에서 간단하게 푸쉬 알림을 성공하는 것 까지만 진행되었습니다. 사실 모바일 개발은 이번이 처음이라... 갑자기 맡게 되어 환경설정 하는것에서도 애먹고, 간단한 예제를 따라하는 데만도 쓸데없는 삽질을 엄청 했습니다;; 힘이 다 빠져버려서 질문드리게 되었어요.

주말에도 해봤는데 집에는 맥북이 없기 때문에 예제조차 진행할 수 없었고, 좀 막막하네요. 우선은 안드로이드 쪽만이라도..

실제 프로젝트에 알림 push 구현해보신 분들께 궁금한 점이 있습니다.

 

1. 구글링하면서 보니 구글 gcm 서버에서 각 사용자 단말기마다 고유의 regID를 부여하고, 이를 3rd party app 서버에 따로 저장한 후, app 서버에서 메시지를 날려야 할 경우 gcm 서버로 push message와 api key와 저장된 regID를 보내면 전송이 되는 방식이더라구요.

여기서 문제점이, gcm서버가 부여한 단말기의 regID를 가끔 갱신한다는 내용입니다. push 서버 구현해보신 분들은 이 부분의 문제점을 어떻게 해결해두셨나요??

저의 짧은 고민으로는..

단말기 사용자가 앱에 접속할때마다 gcm 서버로 regID를 요청하고 요청받은 regID와 기존 app 서버에 저장되있던 regID를 비교해서 다를 경우 app 서버의 regID를 업데이트 한다.

이 정도입니다. 그런데 이 방식이 맞는건지 검증할 수가 없네요. 만약 사용자가 앱을 들락날락 거릴 경우 계속 regID를 요청하게 되는데 이럴 때 문제점은 없는지..

정리하자면, gcm에서 부여받는 regID를 관리하는 방법에 대해 조언 부탁드립니다. gcm에서 regID를 갱신할 경우에 대한 처신 방법도 궁금합니다.

 

2. 위에 말씀드렸지만 제가 모바일 개발 자체가 처음입니다. 어쩌다가 맡게 되었는데 폰갭 프레임워크, 안드로이드 스튜디오나 Node.js 등등 다 처음 써보네요. :(

Xcode는 아직 손도 못대봤구요.

이런 상황에서, 가장 궁금한건.... 안드로이드 소스랑 아이폰 소스랑 어떻게,, 같은 소스 안에서 돌아가게 만들 수는 있는건가요? 요청받은 사항은 같은 소스를 사용해서 각 플랫폼마다 그 소스를 카피해서 관리해야 된다고 했거든요. 폰갭 gmc 예제들을 보니 *.java 파일은 없고 다 js와 index.html을 통해서 구현하긴 해놨더군요. 아이폰도 저 소스 안에 push 기능을 녹여넣을 수 있는 걸까요;;

제가 참조한 사이트입니다.

http://blog.saltfactory.net/node/implementing-push-notification-service-for-android-using-google-play-service.html

 

3. gcm 서버로 푸쉬알림을 날리는 기능은 app 서버에서 해야되더군요. 제가 따라한 예제에서는 node-gcm을 설치한 후 메시지 요청을 하는 js 파일을 node 명령어로 실행시켜 요청하는 방식으로 되어있었습니다. 이쪽은 정말 문외한이라 질문드리는건데,

보통...도 그렇게 하는건가요??? 

 

var message = new gcm.Message({
    
collapseKey: 'demo',    
delayWhileIdle: true,    
timeToLive: 3,    
data: {        
key1: '안녕하세요.',        
key2: 'saltfactory push demo'   
}

})

파일 실행 명령어는 $node OOOO.js

js 파일 안에 key1이 푸쉬 알림의 제목, key2가 푸쉬 알림의 내용인데 app 관리자에게 저런식으로 내용을 채우고 node 명령어를 통해 푸쉬 알림을 요청하면 됩니다... 하고 던져주면 되는건가요?

아니면 따로 페이지를 구현해서 제목과 내용을 적어넣고 버튼을 누르면 저기 있는 js 파일에 알림 메시지를 적용하여 요청을 보내는... 그런 방식으로 만들 수 있는건가요? 모르는 게 정말 많네요.

 

4. 사용자가 push 알림을 원하지 않을 경우, 혹은 폰에서 앱 자체를 지워버릴 경우에 그 폰에 저장된 regID 관리에 대한 방법도 궁금합니다. 모바일쪽은 거듭 말씀드리지만 해본적이 없어서 ㅠ_ㅜ.. 앱을 삭제할 때 발생하는 함수라도 있다면 거기서 regID를 삭제하는 로직을 넣거나 해보겠는데... 그런게 가능한건지 궁금합니다. 간략하게라도 알려주셨으면 감사하겠어요..

 

그리고 가장 중요한 질문입니다.

5. 제가 구현해야 하는 것은 정확한 내용을 모두 전달받은 것은 아니지만 기 개발되어 있는 어플에 push 알람 기능을 넣어주는 것입니다.

특정 사용자에게만 알림을 넣거나, 혹은 다른 특이한 기능을 넣은 알람은 아니구요 그냥 push 알람 기능을 구현만 하면 되는 것 같습니다.

그럼에도... regID에 대한 관리나 모바일 개발에 대한 개념같은 것을 제가 모르기 때문에 시행착오가 막심할 것 같습니다.

이런 상황에서, 테스트 기간까지 포함해서 1~2주 안에 저 기능을 성공적으로 만들어낼 수 있을까요;;? 안드로이드에다 아이폰 개발까지 합쳐서요..

지금 저는 아무 생각이 없고 기간 산정도 전혀 감이 잡히지 않아서요.

 

질문을 너무 구구절절하게 써놨고 정리도 안되있지만 위 질문들 중에 하나라도 도움될만한 것을 알려주신다면 정말 감사하겠습니다.

그리고 gcm 관련해서 개발해 본 예제 파일같은 걸 보내주신다면 제게 크나큰 도움이 될 것입니다. 정말루요. 답변 부탁드려요!!!

공상가지망생 (210 포인트) 님이 2016년 2월 22일 질문

2개의 답변

+1 추천
저는 native만 해봐서 폰갭은 모릅니다.

1. 구글의 최신 GCM 소스를 보면 key가 업데이트 됐을 때 가져오는 코드가 들어가 있습니다.
https://developers.google.com/cloud-messaging/android/start

2. 최신 GCM소스는 iOS도 지원합니다.

3. 제가 쓰려고 돌리고 있는 페이지인데, 사람 쓰려고 저렇게 화면 만들어 놓은거지 코드에서 바로 보내는거면 저렇게 화면까지 만들필요는 없습니다.
https://gcmsender.herokuapp.com
지금 만들어 놓은게 잘 동작한다면, 그냥 쓰면 됩니다.

4. 알림 끄기는 설정화면을 만들어서 사용자가 바꾸면 되고, 앱 삭제하면 자동으로 알림 못 받습니다.(서버에서는 보냈다고 나올테지만, 받는 곳이 없으니 중간에 증발하는거죠)

5. push 기능만 들어있는 예제 프로젝트를 만드시고 숙달을 하세요. 그런 다음에 기존 앱에 붙이면 됩니다.
http://susemi99.kr/3715 에 제가 까먹을까봐 올려놓은 글이 있습니다.
굳이 글을 읽지 않아도 구글의 설명만 따라하면 어렵지 않더라고요. 예전보다 더 쉬워졌어요.
개발을 하던 분이면 예제는 하루나 이틀정도면 충분할테고, 기존 앱에 붙이는 건 2주 안에는 할 수 있을 겁니다.
쎄미 (162,410 포인트) 님이 2016년 2월 22일 답변
답변 정말 감사드립니다. 따라하면서 한번 만들어볼게요. 정말 감사드려요.
+1 추천

안녕하세요! ^^ 안드로이드 공부시작한지 이제 한달 좀 덜됬네요 안드로이드 기본개념 10일정도 공부하다 푸시를 본격적으로 공부하기 시작한날은 2주정도 된거같네요 ㅎ 저도 푸시 처음에 많이 해멨습니다 블로그에 적힌대로 했는데 안되고 안되고 안되고 구글링은 계속하고... 그렇게 5일정도 헤매다가 한번성공하니까 다음단계들은 다 되더라고요  지금 푸시는 완벽하게 됩니다  님도 1주 늦으면 2주안이면 충분히 가능합니다 아이폰은 안해봐서 모르겠네요 ㅎ;; 코드를 드리기보단 제가 보고 성공한 사이트 보내드립니다

http://www.icelancer.com/2015/02/google-cloud-messaging-gcm-3.html제가 푸시배운곳(redID받기)

http://webnautes.tistory.com/828 안드로이드 -> php -> mysql

http://berabue.blogspot.kr/2015/03/android-gcm-server-php.html 제가 푸시전송배운곳

저는 3단계로 나눠서 공부했습니다 ID받기/ 받은 ID 디비로 보내기 /디비에서 ID꺼내서 푸시보내기

이상 도움이 되길바랍니다 ^^

껄껄앱 (1,910 포인트) 님이 2016년 2월 22일 답변
답변 정말 감사드립니다. 게시글 보면서 공부할게요. 감사드립니다!!
...