안드로이드 개발 질문/답변
(글 수 45,052)
현재 제가 구현하고자 하는 프로그램은
서버 컴퓨터에 DataBase(msSQL)이 존재 하고 이 서버는 안드로이드와 접속이 되있습니다(소켓통신)
제가 질문 드리고 싶은 내용은
DataBase에서 값이 변경되면 안드로이드에 변경된 데이터를 넘겨줘서 안드로이드에서 Notification을 띄우는 건데요
예를 들면 DataBase값이 "jyr1" 이라는 값이 들어 오면 안드로이드에서 Notification 알림으로 " jyr1 이 입력됐습니다" 라고 떠야 합니다
Notification 사용과 서버와의 통신은 알겠는데 백그라운드 서비스로 폰에서 항시 대기 해서 서버컴퓨터에서 DataBase 값의 변동을
항상 감시 해야 합니다.
안드로이드 개발 신 님들 ㅠ 제발 도와주세요 ... 이 문제 때문에 5일동안 잠을 못자고 있네요 ㅠ
이왕이면 예제 소스도 좀 올려주시면 감사 하겠습니다 ( 안드로이드에서 항시 대기 해야하는 소스 , 서버에서 항시 데이터를 보내는 소스)
아! 또 질문이 이 개념을 하려면 푸쉬서버를 이용해야하나요 아님 제가 서버를 따로 구현해야 하나요??
푸쉬서버의 개념이 뭐죠?? ㅠㅠ




일반적인 서버-클라이언트 모델에서는 클라이언트가 필요로 하는 데이터를
필요한 시점에 서버에 "요청" 해서 받아와야 하는 한계가 있습니다.
그러나 님의 예처럼 데이터 생성 시점이 서버에 의존적이라면,
클라이언트는 일정 시간 간격으로 데이터 있니? 라고 물어보는 수밖에 없습니다.
(pulling 방식이라고 하죠)
이때, 그 일정 시간이 10분이라면? 평균적으로 5분의 데이터 수신 지연이 발생한게 되고,
1분이라면? 서버가 5분마다 데이터를 생성한다고 가정하면, 5분마다 불필요한 데이터 송수신이 네번 발생한게 됩니다.
이때문에 그 시간간격을 결정하는 여러가지 알고리즘이나 프로토콜이 나왔지만,
근본적으로 불필요한 데이터 교환이 발생할 수 밖에 없는 구조적인 문제는 남아 있게 됩니다.
이를 해결하기 위해서 구글이 제시한 것이 C2DM입니다. 일명 구글푸시서비스 입죠.
"내가 제3의 서버를 두겠다. 나는 어짜피 모든 구글 단말과 연결을 유지하고 있으니...
(지메일이나, 구글캘린더, 마켓어플이 안드로이드 단말에는 모두 탑제되어 연결을 유지합니다.)
네가 사용하는 서버에서 데이터가 생성 혹은 변경되어서 단말에 알려줘야 하는 일이 있다면
내게 말해라. 단말에 전해줄테니" 이게 구글푸시서비스의 개념입니다.
말로 설명하려니 애매한데 ^^; 관련 pt 를 찾아서 그림을 보시면 쉽게 와 닿을 거같네요.