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. 등록 결과 메시지 처리
private final BroadcastReceiver mHandleMessageReceiver =
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);
mDisplay.append(newMessage + "n");
}
};
21. 수신 메시지 처리
public class GCMIntentService extends GCMBaseIntentService {
@Override
protected void onMessage(Context context, Intent intent) {
String message = getString(R.string.gcm_message);
displayMessage(context, message);
// notifies user
generateNotification(context, message);
}
...
}
22. 써드파티 서버
• 클라이언트 통신
• GCM 서버에 요청
• 클라이언트 요청 처리
• GCM 서버 실패 재요청
• API키와 클라이언트 등록 아이디 저장
23. diff C2DM GCM
• 메시지 크기 : 1kb → 4kb
• 서비스 신청 : Mail → 웹설정 On
• 인증 :AuthToken → API key
• 전송 횟수 제한 없어짐
• GCM요청에 JSON 추가
• 4.0.4 이상 구글 계정 없어도 가능