안녕하세요... 모르는 게 참 많아서 질문 드리게 되었네요. 질문이 길지만 꼭 좀 읽어보시고 아는 내용 있으시면 조금이라도 답변 부탁드려요. 감사한 마음으로 질문 드리겠습니다!
이미 구현되어있는 기존의 프로젝트에 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 관련해서 개발해 본 예제 파일같은 걸 보내주신다면 제게 크나큰 도움이 될 것입니다. 정말루요. 답변 부탁드려요!!!