2015년 3월 29일 일요일

[ Android ] GCM Server 만들기 (PHP)

GCM Client 만들기를 통하여 클라이언트 부분을 만들어 놓았습니다. 이번에는 PHP 서버에서 클라이언트로 푸시를 보내 동작을 확인해 보겠습니다.
 이 튜토리얼에서는 PHP의 설치 과정이나 사용방법을 다루지는 않습니다.


1. PHP 코드 작성하기

 위 코드를 작성하고 클라이언트에서 획득한 '등록ID'와 구글 개발자 콘솔에서 발급받은 '서버 키'를 대입시켜 줍니다. 그리고 클라이언트로 전송할 내용을 자유롭게 Json 형태로 넣어주면 코드가 완성됩니다.

 테스트 가능한 본인의 서버에 파일을 올리고 해당 페이지를 실행시키면 잠시 후 클라이언트로 푸시가 전송됩니다.

 만약 한 명의 사용자가 아닌 다수의 사용자에게 푸시를 전송하려면 arr['registration_ids']에 배열 형태로 등록ID를 넣어주시면 됩니다.

[ Android ] GCM Client 만들기

 카카오톡에서 새로운 메시지가 왔을때 알림이나, 각종 게임 접속유도 알림은 푸시를 이용합니다. 이번 튜토리얼은 푸시를 받는 클라이언트에 대해 알아보겠습니다.


1. GCM을 사용하기 전에
 GCM을 사용하기 위해서는 구글 개발자 콘솔에서 프로젝트를 등록해줘야 합니다.
https://console.developers.google.com/project 해당 URL로 이동해서 새로운 프로젝트를 만들어 줍니다(저는 GCM Test로 생성했습니다). 프로젝트 생성 후 왼쪽에 개요를 누르면 프로젝트 번호가 출력됩니다 푸시 클라이언트를 만들때 해당 번호가 필요합니다. 새로운 프로젝트를 생성고 좌측의 API 부분을 누르면 아래와 같은 페이지가 출력 됩니다.


 우측에 Mobile APIs 카테고리의 Cloud Messaging for Android를 누르고 'API 사용 설정' 버튼을 눌러 사용이 가능하도록 변경합니다.
 그리고 좌측에 '사용자 인증 정보'를 눌러 '새 키 만들기' 버튼을 클릭하고 출력되는 팝업에서 '서버 키'를 선택합니다.
 GCM을 보내는 플랫폼에 따라서 키를 선택하면 되는데 해당 튜토리얼에서는 서버에서 GCM을 보낼것이므로 '서버 키'를 선택합니다.


 Key 생성을 완료하면 'API 키'가 생성이 되는데 해당 부분을 프로젝트 번호와 함께 적어둡니다.


2. Android 프로젝트 만들기
 새로운 프로젝트를 하나 생성합니다. 저는 API 16, 4.1(젤리빈) 프로젝트로 생성했습니다.


3. 매니페스트 수정
 GCM을 사용하기위해 몇가지 퍼미션과 리시버를 등록해주어야 합니다.

 퍼미션을 동일하게 작성해주어도 상관이 없지만 리시버 부분의 패키지명은 본인 프로젝트에 맞게 수정해주어야 합니다.
 receiver - intent-filter - category android:name="패키지명" : 프로젝트 패키지 이름


4. GCM 클라이언트 만들기
 프로젝트에 Google Play Service 라이브러리를 추가합니다. (없으신 분들은 SDK를 업데이트 후 추가해주세요)
 그리고 https://github.com/google/gcm GCM 오픈소스를 다운받아 클라이언트 부분의 GcmBroadcastReceiver, GcmIntentService 파일을 프로젝트에 추가합니다.
 MainActivity에서 푸시ID를 얻기위해 코드를 작성합니다.

 위 코드는 GCM 오픈소스 프로젝트의 DemoActivity를 수정하여 만들었습니다.
SENDER_ID에 1번 작업에서 적어놓았던 프로젝트 번호를 넣어줍니다. 앱을 실행하면 로그에 등록ID가 출력됩니다. 해당 ID는 서버쪽에서 클라이언트로 푸시를 보낼때 사용됩니다.

 푸시가 도착했을때 기본적으로는 알림이 출력됩니다. 해당 액션을 변경하고 싶으신 분들은 GcmIntentService 클래스의 sendNotification() 함수 내용을 수정하시면 됩니다.

2015년 3월 9일 월요일

[ Android ] Notification 사용하기

해당 튜토리얼은 젤리빈 4.1 버전 이상부터 정상 작동합니다.

1. 기본 알림 출력 하기.


 사용 가능한 대부분의 기능들을 주석과 함께 작성하였습니다.

위 기능들은 다른 스타일의 알림에도 공통으로 적용이 가능합니다.

또한 setSmallIcon()을 작성하지 않으면 알림이 실행되지 않습니다.

알림이 등록될 때 이벤트를 지정해주는 setDefaults() 함수에서 진동을 사용하려면 퍼미션을 등록해야 합니다.




2. BigTextStyle 알림 출력 하기.


 코드를 간략하게 하기위해서 1번에서 설명한 필수 기능인 setSmallIcon()을 제외하고 모두 제거하였습니다.

BigTextStyle은 아래와 같이 더 넓은 화면으로 출력이 가능합니다.




3. BigPictureStyle 알림 출력 하기.


 bigPicture() 메서드에 Bitmap 형식의 이미지를 넣어주면 아래와 같은 큰 이미지를 넣을 수 있습니다.




4. InBoxStyle 알림 출력 하기.


 InBoxStyle은 addLine()을 사용하여 텍스트를 한 줄씩 추가가 가능합니다.



Post List