• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Gcm
 

Gcm

on

  • 1,098 views

 

Statistics

Views

Total Views
1,098
Views on SlideShare
1,098
Embed Views
0

Actions

Likes
3
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Gcm Gcm Presentation Transcript

    • GCMkenu@okjsp.pe.kr허광남
    • agenda• 사전 준비• GCM 기능• 아키텍처• 클라이언트• 써드파티 서버 모듈
    • GCM• Google Cloud Message• 서버가 디바이스 호출
    • 사전 준비• https://code.google.com/apis/console• API 프로젝트 생성
    • Sender ID• Project Number
    • Service ON• Google Cloud Messaging for Android
    • Key for server apps
    • Android Library
    • gcm-server.jar
    • 주요 기능• 간단 메시지• 서버에서 디바이스로 전송; 일방향• 대용량 콘텐츠 필요시 서버에 다시 접속• 순서나 트랜잭션 무보장
    • 클라이언트• 프로세스 살아있을 필요 없음• 인텐트 브로드캐스트 이용해서 앱 실행• 매니페스트에 브로드캐스트 미리 설정
    • 요구 조건• 안드로이드 2.2 이상 필수 조건• 구글 플레이 스토어 앱 설치• 구글 계정 설정• 안드로이드 4.0.4 이상은 예외
    • 아키텍처• 컴포넌트(Component)• 자격증명(Credentials)
    • 컴포넌트• 안드로이드 디바이스• 써드파티 애플리케이션 서버• GCM 서버
    • 자격증명• Sender ID• App ID ; 패키지명• 등록 ID ;특정 디바이스에서 구동되는 특정 앱 구분• 구글 사용자 계정; 4.0.4 미만• Sender AuthToken;써드파티 서버 보관,API키
    • Lifecycle• GCM 활성화 > 메시지 보내기 > 메시지 받기
    • 앱 만들기• 매니페스트 파일 수정• 자바 코드 구현
    • 매니페스트 파일 작성<manifest ...><uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.GET_ACCOUNTS" /><uses-permission android:name="android.permission.WAKE_LOCK" /><permission android:name="com.google.android.gcm.demo.app.permission.C2D_MESSAGE"android:protectionLevel="signature" /><uses-permission android:name="com.google.android.gcm.demo.app.permission.C2D_MESSAGE"/><uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /><application ...><receiver android:name="com.google.android.gcm.GCMBroadcastReceiver"android:permission="com.google.android.c2dm.permission.SEND" ><intent-filter><action android:name="com.google.android.c2dm.intent.RECEIVE" /><action android:name="com.google.android.c2dm.intent.REGISTRATION" /><category android:name="com.google.android.gcm.demo.app" /></intent-filter></receiver><service android:name=".GCMIntentService" /></application></manifest>
    • GCM 등록static boolean register(final Context context, final String regId) {String serverUrl = SERVER_URL + "/register";Map<String, String> params = new HashMap<String, String>();params.put("regId", regId);long backoff = BACKOFF_MILLI_SECONDS + random.nextInt(1000);for (int i = 1; i <= MAX_ATTEMPTS; i++) {Log.d(TAG, "Attempt #" + i + " to register");try {displayMessage(context, context.getString(R.string.server_registering, i, MAX_ATTEMPTS));post(serverUrl, params);GCMRegistrar.setRegisteredOnServer(context, true);String message = context.getString(R.string.server_registered);CommonUtilities.displayMessage(context, message);return true;} catch (IOException e) {
    • 등록 결과 메시지 처리private final BroadcastReceiver mHandleMessageReceiver =new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);mDisplay.append(newMessage + "n");}};
    • 수신 메시지 처리public class GCMIntentService extends GCMBaseIntentService {@Overrideprotected void onMessage(Context context, Intent intent) {String message = getString(R.string.gcm_message);displayMessage(context, message);// notifies usergenerateNotification(context, message);}...}
    • 써드파티 서버• 클라이언트 통신• GCM 서버에 요청• 클라이언트 요청 처리• GCM 서버 실패 재요청• API키와 클라이언트 등록 아이디 저장
    • diff C2DM GCM• 메시지 크기 : 1kb → 4kb• 서비스 신청 : Mail → 웹설정 On• 인증 :AuthToken → API key• 전송 횟수 제한 없어짐• GCM요청에 JSON 추가• 4.0.4 이상 구글 계정 없어도 가능
    • 참고• 안드로이드 프로그래밍의 모든 것, 김지훈 외,2013, 에이콘, 32장 GCM 서비스