Views 25315 Votes 0 Comment 4
Atachment
Attachment '4'
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

*GCM 소개 : http://developer.android.com/guide/google/gcm/index.html

*가이드 문서 : http://developer.android.com/guide/google/gcm/gs.html


1. GCM 서버용 라이브러를 웹 프로젝트에 추가하기

GCM 사용하기 2 를 보았다면 GCM 라이브러를 어떻게 받는지 알 것이다. 라이브러리를 받지 않았다면 이전 글을 참고하여 다운 받도록 하자.


다운로드 받으면 자신이 안드로이드 sdk 설치 폴더(기본은 C:android-sdk-window)에 들어가 보면

extras 폴더 -> google -> gcm -> gcm-server -> dist 에 들어가 보면 2개의 jar 파일이 있다.

그 중 gcm-server.jar 파일을 자신의 프로젝트에 추가하면 된다.

gcm21.png


웹 프로젝트에 라이브러리 추가하는 방법은 Tomcat이 설치된 폴더에 가면 lib 폴더가 있다 여기에 추가해 주면 된다.

*혹은 자신의 웹 프로젝트의 WebContent -> WEB-INF -> lib 폴더에 추가해도 된다.


gcm22.png



2. GCM 푸시 보내기 코드

GCM 라이브러리를 이용하게 되면 굉장히 적은 코드로 푸시를 보낼 수 있게 된다.


public void sendPush() {

   Sender sender = new Sender(API_KEY);  //구글 코드에서 발급받은 서버 키

   Message msg = new Message.Builder()

                                               .addData(key, value)  //데이터 추가

                                               .addData(key, value)  //데이터 추가

                                               .build();


   //푸시 전송. 파라미터는 푸시 내용, 보낼 단말의 id, 마지막은 잘 모르겠음 

   Result result = sender.send(msg, regId, 5);


   //결과 처리

   if(reuslt.getMessageId() != null) {

      //푸시 전송 성공

   }

   else {

      String error = result.getErrorCodeName();   //에러 내용 받기


      //에러 처리

      if(Constants.ERROR_INTERNAL_SERVER_ERROR.equlas(error)) {

         //구글 푸시 서버 에러

      }

      else if() {}

         ......

   }

}


Sender, Message, Result, Constants 클래스는 모두 gcm-server 라이브러리에 속한 클래스 이다.


Sender sender = new Sender(API_KEY); 에서 사용한 API_KEY 는 String 형태이고 값은

gcm 사용하기 1에서 제일 마지막에 생성한 서버 키 값이다.

gcm23.png


Result result = sender.send(msg, regId, 5); 에서 사용된 regId는 단말에서 GCM  서비스 등록할 때 받은 등록 ID 이다. GCM 사용하기 2를 참고하면 된다.


regId는 String 형태이다. 테스트를 위해 단말을 실행하여 등록id 값을 얻은 후 서버에 String 변수를 만들어 값을 저장하여 쓰면 된다.



3. GCM 푸시 서버 실해하여 푸시 전송하기

위에 까지 따라 왔으면 바로 서버를 실행하여 푸시를 전송해 보자.

아마도 아래와 같은 Exception이 발생할 것이다.

발생하지 않고 푸시가 잘 전송되고 단말에서도 잘 받는다면 이 후의 글은 넘겨도 된다.


java.lang.ClassNotFoundException: org.json.simple.parser.ParseException
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)


Exception이 발생한 이유는 GCM 라이브러리에서 사용하는 클래스가 없다는 것이다.

http://code.google.com/p/json-simple/ 여기로 가서 json-simple 라이브러리 파일을 다운받으면 된다.

현재 최신 버전은 1.1.1 버전이다. 다운 받은 후 라이브러리를 추가 후 다시 실행해 보자.


이제는 잘 될 것이다.




*샘플코드 요청이 있어서 첨부합니다.

  샘플에는 API_KEY와 단말의 등록 id 값이 빠져 있으니 자신의 것으로 넣어서 테스트 해보세요.

  BkAction.java에 있습니다.


전체 샘플 코드 첨부하였습니다.

*글과 자료는 출처만 밝히시면 얼마든지 가져다 쓰셔도 됩니다.


[출처] http://blog.daum.net/mailss/33



?
  • ?
    정진 2013.10.15 16:28
    소스 참고 하고 싶은데.. 다운로드 권한이 없다고 하네요..
  • profile
    hooni 2013.10.16 00:49

    아래 출처(http://blog.daum.net/mailss/33)에서 다운로드 받으실 수 있습니다.

  • ?
    정진 2013.10.16 11:41
    DB와 안드로이드를 연동시키는 예제는 없을까요...?
  • profile
    hooni 2013.10.16 13:53
    JSP와 DB의 연동은 이 글의 주제(JSP에서 GCM발송)에서 벗어난 내용입니다.
    DB와 연동 부분은 플랫폼에 맞게 따로 구현하시면 될것 같습니다^^;

  1. [ios][swift] 초간단 카달로그 앱 (Catalog App)

    Date2016.06.27 CategoryDevelop Byhooni Views7123
    Read More
  2. [ios] 새로 만들고 있는 DateMemo

    Date2016.07.12 CategoryDevelop Byhooni Views603
    Read More
  3. [ios] Crashlytics, Fabfic 설치/설정

    Date2016.07.21 CategoryDevelop Byhooni Views727
    Read More
  4. [c] 파일명 또는 특정 패턴을 적용

    Date2016.08.03 CategoryDevelop Byhooni Views751
    Read More
  5. [android] Android N requires the IDE to be running with Java 1.8 or later 오류

    Date2016.08.30 CategoryDevelop Byhooni Views687
    Read More
  6. [c] 셀프 넘버(Self Number) 구하기

    Date2016.09.09 CategoryDevelop Byhooni Views2262
    Read More
  7. [c] Mac OS 에 gmp(gmp.h) 라이브러리 설치

    Date2016.10.03 CategoryDevelop Byhooni Views1208
    Read More
  8. [c] RSA 암호화 구현(gmp 라이브러리 활용)

    Date2016.10.03 CategoryDevelop Byhooni Views882
    Read More
  9. [matlab] 정보은닉 스테가노그래피(Steganography) 수업

    Date2016.10.03 CategoryDevelop Byhooni Views682
    Read More
  10. [matlab] ZigZag-Scanning (2-D Array)

    Date2016.10.15 CategoryDevelop Byhooni Views1987
    Read More
  11. [android] dp, px 서로 변환

    Date2016.10.21 CategoryDevelop Byhooni Views3375
    Read More
  12. [android] 초간단 얼럿 (AlertDialog)

    Date2016.10.21 CategoryDevelop Byhooni Views811
    Read More
  13. [android] 레이아웃 사이즈 변경 (동적; programmatically)

    Date2016.11.07 CategoryDevelop Byhooni Views1482
    Read More
  14. [Android Error] The number of method references in a .dex file cannot exceed 64K

    Date2016.11.10 CategoryDevelop Byhooni Views756
    Read More
  15. [android] Calling activity function from separate class

    Date2016.11.15 CategoryDevelop Byhooni Views1157
    Read More
  16. [android] How can I place app icon on launcher home screen?

    Date2016.11.15 CategoryDevelop Byhooni Views1263
    Read More
Board Pagination Prev 1 ... 46 47 48 49 50 53 Next
/ 53