메뉴 건너뛰기

조회 수 7000 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
안드로이드에서 푸시 서비스는 2.2 프로요 버전부터 애플리케이션에 적용할 수 있도록 지원하던 C2DM(Cloud To Device Messaging)을 젤리빈 4.1 버전부터 GCM(Google Cloud Messaging)으로 바꾸어 지원합니다

GCM에 대한 개략적인 프로세스와 초기 등록 ID를 획득하기까지의 방법은 아래 링크를 참고합시다 

GCM 푸시서버연동 설정 - Client
참고 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=0qCVX&articleno=11 작성시기 : 2015.04.10 [간략소개] 출처 : http://musasin8...
scotthan.tistory.com
본문으로 이동

GCM 푸시 메시지 처리과정을 간단하게 정리하면 다음과 같습니다
  1. 단말은 자신을 클라우드 서버에 등록하고 서버로부터 등록 ID를 받습니다
  2. 등록 ID 정보는 메시지를 전송할 권한이 있는 애플리케이션 서버로 보낸 후 메시지를 기다립니다
  3. 보내고자 하는 메시지는 애플리케이션 서버에서 클라우드에 접속한 후 전송합니다
  4. 전송된 메시지는 등록한 단말에 보내집니다

애플리케이션 서버는 직접 단말로 메시지를 보낼 수 없으므로 클라우드 서버를 통해 보내게 됩니다. 즉, 메시지의 흐름은 '애플리케이션 서버 -> 클라우드 서버 -> 단말'의 형태를 띠게 됩니다

이 과정에서 다음과 같은 두 가지 내용을 기억할 필요가 있습니다
  1. 애플리케이션 서버에 저장된 단말의 등록 ID
  2. 애플리케이션 서버에서 클라우드 서버로 접속하기 위한 인증 정보

등록 ID(Registration ID)는 등록한 단말별로 고유한 값으로 설정되어 애플리케이션 서버에 저장되며, 클라우드 서버가 메시지를 보내주어야 할 단말을 구분하는데 사용됩니다

인증정보는 애플리케이션을 등록해야 사용할 수 있고, 클라우드 서버로 접속하기 위한 인증 정보입니다. 아무나 접속하여 단말로 메세지를 보내면 안되므로 애플리케이션 서버가 API 키라고 불리는 고유한 값을 이용해 메시지를 보내도록 합니다

GCM을 위한 앱을 만드려면 먼저, 안드로이드 스튜디오에서 'play services' 라이브러리를 다운받아야 합니다

매니페스트에는 GCM을 사용하기 위해 정의한 서비스를 등록하고 권한 정보 등을 넣어야 합니다
1.jpg




다음은 액티비티 부분입니다 (단말 등록하기 / 전송하기)
2.png




메인 액티비티의 코드에서는 Sender 객체를 초기화하는 부분과 함께 [단말 등록하기]와 [전송하기] 버튼을 눌렀을 때 호출하는 메서드들을 볼 수 있습니다. Sender 객체는 단말에서 메시지를 보낼 때 사용하는 것으로 구글 API 콘솔 사이트에서 발급받은 API 키를 파라미터로 전달하면서 초기화합니다

[단말 등록하기] 버튼을 눌렀을 때 호출하는 registerDevice() 메서드에는 다음과 같은 코드가 들어 있습니다
3.png



GoogleCloudMessaging 객체는 구글 클라우드 서버에 단말을 등록하는 과정을 도와줍니다. 이 객체를 참조한 후 단말을 등록하기 위해 register() 메서드를 호출합니다. 단말 등록 과정은 내부적으로 인터넷을 사용하므로 스레드 클래스를 하나 정의하고 그 안에서 처리합니다

register() 메서드를 호출하여 정상적으로 단말이 등록되면 등록 ID를 돌려받게 됩니다. 이 등록 ID는 푸시 메시지를 보낼 때 사용하므로 잘 보관해두어야 합니다. 원래는 푸시 메시지를 전송하는 쪽으로 이 등록 ID를 보내주어야 하지만 예제 소스에서는 보내는 기능이 같이 들어가 있으므로 변수에 저장해 두었다가 메시지를 전송하기 위한 버튼을 눌렀을 때 이 변수의 정보를 사용하게 됩니다

[전송하기] 버튼을 눌렀을 때 호출되는 메서드는 다음과 같습니다
4.png




메시지를 전송할 때도 스레드 안에서 전송되도록 구현하고 Sender 객체의  send() 메서드를 호출하면 Message 객체를 만들어서 메시지를 전송하게 됩니다

Message 객체의 addData() 메서드를 이용해 데이터를 추가할 때 이름과 값을 지정하는데, 받는쪽에서도 이를 구분하여 수신하게 됩니다. send() 메시지를 호출할 때는 등록 ID가 파라미터로 전달되어야 합니다. 즉, 메시지를 전송하는 쪽에서 메시지를 받을 단말의 등록 ID를 가지고 있어야 한다는 의미가 됩니다

이렇게 메시지를 전송하면 클라우드 서버로 보내진 메시지는 다시 단말 쪽에서 받게 됩니다. 단말 쪽에서 메시지를 받게 되면 GCMBroadcastReceiver 안에 들어 있는 onReceive() 메서드가 호출됩니다
5.png




위 소스에서는 푸시 메시지를 전달받은 데이터를 이용해 메인 액티비티를 띄우는데 인텐트에 플래그를 주었기 때문에 메인 액티비티의 onNewIntent() 메서드로 데이터가 전달됩니다
6.png




애플리케이션 업데이트 정보를 단말에 알려주어야 하는 경우처럼 이미 많은 사람들이 사용하는 애플리케이션에 알림 메시지를 전송하려고 할 때는 GCM을 사용하는 것이 간편하고 좋을 수 있습니다

  1. 노티피케이션(Notification) 사용법 / Notification.Builder , NotificationManager

  2. 어댑터 뷰(Adapter View) & 어댑터(Adapter) (1)

  3. Activity Data Transfor/ 액티비티 이동간에 데이터 전송하기

  4. Activity Switching / 안드로이드 액티비티 전환 / 화면 전환

  5. No Image 07Jun
    by
    2016/06/07 Views 7458 

    알아놓으면 좋은 내용정리

  6. 간단한 mp3 플레이어 만들기 , 음악넣기 , 노래재생

  7. 암시적 인텐트를 사용한 인터넷열기, 전화걸기, 문자보내기 [Intent (인텐트)]

  8. No Image 07Jun
    by
    2016/06/07 Views 7626 

    Intent (인텐트)

  9. Android 와 JSP 간 파라미터 암복호화 (3)

  10. No Image 26May
    by
    2016/05/26 Views 7735 

    Android 와 JSP 간 파라미터 암복호화 (2)

  11. Android 와 JSP 간 파라미터 암복호화 (1)

  12. 카카오톡 대화내용 가져오기(sqlite3, chat_logs)

  13. 카카오톡 분석하기 (2) - 카카오톡 암호화 함수 찾기

  14. 카카오톡 분석하기 (1) - sqlite 파해치기

  15. 안드로이드용 채팅프로그램 클라이언트(java), 서버(c#) 소스

  16. No Image 18Mar
    by
    2016/03/18 Views 7131 

    네트워크 연결 상태 및 3G/WIFI 연결상태 체크하기

  17. Android Push GCM 프로젝트 앱 적용 하기(2)

  18. 안드로이드] 페이스북 같은 슬라이드 메뉴 만들기

  19. No Image 15Dec
    by
    2015/12/15 Views 6629 

    Android TIP] strings.xml 에서 특수문자 사용하기

  20. No Image 15Dec
    by
    2015/12/15 Views 6487 

    Android] Fragment 내부의adapter에서 startActivity 하기

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved