Gcm

1,755 views

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,755
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
16
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Gcm

  1. 1. GCMkenu@okjsp.pe.kr허광남
  2. 2. agenda• 사전 준비• GCM 기능• 아키텍처• 클라이언트• 써드파티 서버 모듈
  3. 3. GCM• Google Cloud Message• 서버가 디바이스 호출
  4. 4. 사전 준비• https://code.google.com/apis/console• API 프로젝트 생성
  5. 5. Sender ID• Project Number
  6. 6. Service ON• Google Cloud Messaging for Android
  7. 7. Key for server apps
  8. 8. Android Library
  9. 9. gcm-server.jar
  10. 10. 주요 기능• 간단 메시지• 서버에서 디바이스로 전송; 일방향• 대용량 콘텐츠 필요시 서버에 다시 접속• 순서나 트랜잭션 무보장
  11. 11. 클라이언트• 프로세스 살아있을 필요 없음• 인텐트 브로드캐스트 이용해서 앱 실행• 매니페스트에 브로드캐스트 미리 설정
  12. 12. 요구 조건• 안드로이드 2.2 이상 필수 조건• 구글 플레이 스토어 앱 설치• 구글 계정 설정• 안드로이드 4.0.4 이상은 예외
  13. 13. 아키텍처• 컴포넌트(Component)• 자격증명(Credentials)
  14. 14. 컴포넌트• 안드로이드 디바이스• 써드파티 애플리케이션 서버• GCM 서버
  15. 15. 자격증명• Sender ID• App ID ; 패키지명• 등록 ID ;특정 디바이스에서 구동되는 특정 앱 구분• 구글 사용자 계정; 4.0.4 미만• Sender AuthToken;써드파티 서버 보관,API키
  16. 16. Lifecycle• GCM 활성화 > 메시지 보내기 > 메시지 받기
  17. 17. 앱 만들기• 매니페스트 파일 수정• 자바 코드 구현
  18. 18. 매니페스트 파일 작성<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>
  19. 19. 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) {
  20. 20. 등록 결과 메시지 처리private final BroadcastReceiver mHandleMessageReceiver =new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);mDisplay.append(newMessage + "n");}};
  21. 21. 수신 메시지 처리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);}...}
  22. 22. 써드파티 서버• 클라이언트 통신• GCM 서버에 요청• 클라이언트 요청 처리• GCM 서버 실패 재요청• API키와 클라이언트 등록 아이디 저장
  23. 23. diff C2DM GCM• 메시지 크기 : 1kb → 4kb• 서비스 신청 : Mail → 웹설정 On• 인증 :AuthToken → API key• 전송 횟수 제한 없어짐• GCM요청에 JSON 추가• 4.0.4 이상 구글 계정 없어도 가능
  24. 24. 참고• 안드로이드 프로그래밍의 모든 것, 김지훈 외,2013, 에이콘, 32장 GCM 서비스

×