본문 바로가기
Android/Android

Android(7)_Push

by 미티치 2016. 6. 1.

■ Push Service


 

안드로이드 디바이스를 사용하다보면 앱의 업데이트가 있다는 메세지를 종종 보게 됩니다. 단말의 위쪽 부분에 보이는 상태바에 메세지가 표시되는데, 사용자가 직접 앱을 실행하지 않아도 이러한 알림을 자동으로 어떻게 받는 것일까요??

 

안드로이드 push는 이런 앱 알람을 말하는 것입니다. (어플 관리자)에서 단말로 보내는 알림 메세지를 받는 기능을 의미합니다. 앱에서 단말로 보내는 메세지는 앱 관리자가 보내는 메세지 (앱 업데이트 알림) 일 수도 있고 금융권 앱같은 경우에는 금융상품 홍보를 위한 알림 메세지일 수도 있고 애니팡같은 게임에서 하트가 가득 찼다고 보내는 알림 메세지도 모두 push 기능을 이용한 알림메세지 입니다.

 

그렇다면 이렇게 단말오 알림 메세지를 보내는 기술적인 방법에는 어떤 것이 있을까요? 

크게 보면 세가지 기술적 방법이 있습니다.

 

 

  1) 단순 SMS를 이용한 알림 : 간단하지만 이동통신사의 서버를 사용하기때문에 비용이 발생

 

  2) 앱에서 연결을 만들어 놓은 상태에서 알림 : 앱에서 서버와의 연결을 만들어 놓고 폴링(Polling, 단말에서 서버로 연결을 유지하면서 동시에 연결을 지속적으로 유지하기 위해 일정 시간 간격으로 연결이 끊어졌는지 검사하는 메커니즘)하는 과정이 필요하며, 백그라운드 서비스를 이용해야 하므로 간단하지만은 않다.

 

  3) 구글의 Push 서비스(Google Cloud Messaging) 사용하여 알림 : 연결을 만들어 놓고 폴링을 일부 사용하지만 구글의 클라우드 서버를 이용해 최적화한 서비스로 단말의 안드로이드 마켓에서 이미 사용하고 있는 서비스이다.

 

 

보통은 2번방법을 생각하고 앱에서 각자 push 서비스를 이용하기 위해 구현해놓는다면 위에서 말했다시피 폴링 기능을 구현해야하는데, 폴링 기능을 구현하게되면 그 과정에서 단말의 하드웨어 리소스나 전원을 많이 소모하는 문제가 발생하게 됩니다. 따라서 GCM방식을 사용하여 푸시 메시지를 구글 서버에서 구글 플레이 스토어가 설치된 단말기로 보내주는 GCM 방식을 사용하는 것이 효과적으로 푸시 메시지를 보내줄 수 있는 방법입니다.

 

 

자, 그럼 내가 만들 어플리케이션이 GCM을 이용해서 push 기능을 구현한다면, 어떻게 GCM을 이용할 것인가에 대해 알아봅시다.

 

먼저 GCM 푸시 메시지 처리 과정입니다.

 

 

1) 단말은 자신을 Google Cloud 서버에 등록하고 서버로부터 등록 ID를 받는다.

2) 등록 ID 정보는 메시지를 전송할 권한이 있는 애플리케이션 서버로 보낸 후 메시지를 기다린다.

3) 보내고자 하는 메시지는 애플리케이션 서버에서 클라우드에 접속한 후 전송합니다.

4) 전송된 메시지는 등록한 단말에 보내진다.

 

이러한 처리 과정을 거쳐서 결국 애플리케이션 서버 -> 클라우드 서버 -> 단말기 로 푸시 메시지를 보내게 됩니다.

푸시 메세지를 보내는 서버는 웹 프로그램이 될 수도 있고, 다른 앱이 될 수도 있고, 자바 프로그램일 수도 있습니다. 이 서버는 구글 클라우드에 요청만 보내면 됩니다.

 

 

 

 

■ GCM 애플리케이션 등록

 

자 그럼 이제 Google Cloud Messaging을 이용해봅시다. 우선 GCM을 이용하기 위해서는 애플리케이션을 등록해야 합니다. GCM은 여러 구글 서비스 중의 하나로 제공되므로 구글 개발자 콘솔 페이지에서 설정할 수 있습니다.

 

구글 개발자 콘솔 페이지  http://console.developers.google.com

 

위의 주소로 들어가서 Google Cloud Messaging에 들어가서 Sender ID를 발급받아야 합니다.

 

 

정리하자면 GCM의 특징은 다음과 같습니다

 

  • Android 애플리케이션에 메시지를 보낼 수있는 3'rd Party 애플리케이션 서버를 허용한다.
  • GCM은 메시지의 전달과 순서를 보장하지 않는다.
  • 메시지를 수신하기 위해 Android 디바이스의 Android 애플리케이션이 실행되고 있을 필요는 없다. 애플리케이션이 적절한 broadcast receiver와 권한을 설정하는 경우, 메시지가 도착했을 때, 시스템은 Intent broadcast가 Android 앱을 깨운다.
  • 메시지 데이터를 위해 내장 사용자 인터페이스 및 기타 다른 처리는 제공하지 않고 있다. GCM은 단순히 원시 메시지 데이터를 그대로 Android 앱에 전달하고, 메시지의 처리는 앱이 완벽하게 제어 할 수 있다. 예를 들어 애플리케이션은 노티를 게시하거나, 고객 지정 사용자 인터페이스를 표시하거나, 백엔드로 데이터를 동기화 할 수도 있다.
  • Android 2.2 이상을 실행하고, Google Play Store 애플리케이션이 설치되어 있는 디바이스 또는, Google APIs를 가진 Android 2.2을 실행하고 있는 에뮬레이터가 필요하다. 그러나, Google Play Store를 통해 Android 애플리케이션을 배포하는데 제한은 없다.
  • Google 서비스에 대한 기존 커넥션을 사용한다. 이것은 3.0 이전 장치에서 사용자가 모바일 디바이스의 Google 계정 설정이 필요하다. Android 4.0.4 이상을 실행하는 장치에서 Google 계정은 필요 없다.

  •  ( 출처 http://www.mimul.com/pebble/default/2012/09/01/1346492216891.html ) 

     

     

     

    'Android > Android' 카테고리의 다른 글

    Android(9)_Slide Menu  (1) 2016.07.26
    Android 흑과백 게임  (0) 2016.06.13
    Android(5)_Intent  (0) 2016.05.31
    Android 계산기  (0) 2016.05.31
    Android(4)_고급Widget  (0) 2016.05.30