출처 - http://warmz.tistory.com/570
===================================================================================
최근에 알게 되었는데.. 구글에서도 애플의 푸쉬노티피케이션과 같은 서비스를 사용할 수 있게 되었다.
아직은 랩에서 활용되고 있는 것 같다. 일명. C2DM 이며, 안드로이드 버전 2.2에서 사용이 가능하다고 한다.
이것과 관련된 일부 기사를 링크한다.
[번역]안드로이드 C2DM 을 이용한 Chrome to Phone 에 관하여
[번역] 안드로이드 Android Cloud to Device Messaging(C2DM)
관련 기사와 정보를 토대로 가입을 시도해 보았다.
서비스 가입을 위한 사이트는 http://code.google.com/intl/ko-KR/android/c2dm/signup.html 이다.
가입을 시도해 보았다.
정보들을 입력하는 과정에서 일 최대 메시지 수, 피크시의 메시지 수와 함께 제한되는 것으로 보내는 쪽의 총 메시지 수와 개별 장비로 전송되는 메시지 수를 검토해서 구글에서 제한 할 수도 있다는 문구가 보인다.
하지만, 가입을 절차를 완료하지 못했다. 아무래도 아직 완성도 있게 만들어 지지는 않은듯 한다.
일부 사용자 중에서는 6월부터 개발해서 테스트가 잘 되었으나 최근들어 서비스가 되지 않는다는 기사도 본적이 있다.
전체 스마트폰의 점유율 1위를 달리는 안드로이드의 푸쉬 서비스 환경에 기대를 해보지만 아직은 접근하기가 쉽지 않은것 같다.
최근 발표된 윈도우폰7에 이어 안드로이드까지 정식 서비스가 된다면 역시 실시간 메시지 전달 플랫폼은 더욱 부각이 될 것이다.
- 안드로이드 2.2 버전이 필요합니다.
- C2DM 은 '구글 서비스'를 사용합니다. 이 서비스는 안드로이드 마켓을 사용하는 모든 디바이스에 존재합니다.
- C2DM 은 '구글 서비스' 를 위해 이미 존재하는 커넥션을 사용합니다.
- C2DM 은 안드로이드 폰 상에서 사용자가 구글 계정으로 로그인 해야 사용이 가능합니다.
- C2DM은 서드파티 서버가 간단한 메세지를 자신들의 어플리케이션으로 전달하는 것을 허용합니다.
- C2DM 서비스는 대량의 컨텐츠를 푸쉬하도록 설계되지 않았습니다. 대신 특정 어플리케이션에게 새로운 데이타가 있음을 '쿡' 하고 알려 주고, 어플리케이션이 해당 서버에 접속해서 데이타를 다운로드 받을 수 있도록 하는데 사용되어야 합니다.
- 어플리케이션은 메세지를 받기 위해 작동중일 필요가 없습니다. 시스템은 전달해야할 데이타가 도착하는 경우에, 브로드캐스트 인텐트를 이용해 해당 어플리케이션을 깨울 것 입니다. 따라서, 어플리케이션은 적절하게 브로드캐스트 리시버와 Permission 을 설정해야 합니다.
- 데이타 메세지를 전달 받기 위해 사용자 인터페이스가 필요하지는 않습니다. 물론 어플리케이션이 원한다면 알림창에 노티피케이션을 날릴 수도 있을 것 입니다.
- C2DM 을 사용하기 위해 디바이스 상의 어플리케이션은 우선 구글에 등록해 Registration ID 를 발급 받아야 합니다. 해당 ID 를 자신의 서버에 전달해야 합니다.
- 만일 자신의 서버가 푸시하고 싶은 메세지가 있을 경우, 메세지를 HTTP 를 통해 구글의 C2DM 서버에 전달합니다.
- C2DM 서버는 메세지를 디바이스에 라우팅 하고, 디바이스는 브로드캐스트 인텐트를 어플리케이션에 전달 할 것 입니다.
- 타켓 어플리케이션은 브로드 캐스트 인텐트를 통해 깨어나고 메세지를 처리합니다.
- 어플리케이션은 사용자가 더이상 푸시 서비스를 받고싶지 않을 경우 등록을 취소할 수 있습니다.
// Use the Intent API to get a registration ID
// Registration ID is compartmentalized per app/device
Intent regIntent = new Intent(
"com.google.android.c2dm.intent.REGISTER");
// Identify your app
regIntent.putExtra("app",
PendingIntent.getBroadcast(this /* your activity */,
0, new Intent(), 0);
// Identify role account server will use to send
regIntent.putExtra("sender", emailOfSender);
// Start the registration process
startService(regIntent);
// Registration ID received via an Intent
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (“com.google.android.c2dm.intent.REGISTRATION”.equals(action)) {
handleRegistration(context, intent);
}
}
public void handleRegistration(Context context, Intent intent) {
String id = intent.getExtra(“registration_id”);
if ((intent.getExtra(“error”) != null) {
// Registration failed. Try again later, with backoff.
} else if (id != null) {
// Send the registration ID to the app’s server.
// Be sure to do this in a separate thread.
}
}
- Authorization: GoogleLogin auth=<auth token>
- Registration ID 와 키/벨류 쌍으로 이루어진 데이타, Google C2DM 서버에서 동일한 키값을 갖고 있는 오래된 메세지를 가로채기 위해 사용되는 'Collapse Key' 등몇 가지 옵셔널한 파라매터들을 포함하도록 인코딩된 URL.
출처 - http://nuninaya.tistory.com/574
'Android > GCM' 카테고리의 다른 글
android - gcm-server.jar maven repository and dependency (0) | 2013.06.08 |
---|---|
GCM 특징 및 설정 (0) | 2013.01.18 |
android - 아이폰, 안드로이드 통합 푸시 서버 만들기 (3) | 2012.09.11 |