package com.leminity.gcmsampleapp;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.google.android.gcm.GCMRegistrar;
/**
* GCM Service 이용을 위한 샘플 프로젝
* @author Leminity
*
*/
public class MainActivity extends Activity {
private static final String TAG ="MainActivity";
private static final String PROJECT_ID=""; //Google Cloud Messageing Service PROJECT ID
private Context appContext = null;//applicationContext
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialize();//변수 초기화
startGCM();//GCM 시작 메소드
}
private void initialize(){
appContext = getApplicationContext();
}
/**
* GCM 서비스를 시작한다.
*/
private void startGCM(){
/**
* GCM Service가 이용 가능한 Device인지 체크한다.
* api 8(Android 2.2) 미만인 경우나 GCMService를 이용할 수 없는
* 디바이스의 경우 오류를 발생시키니 반드시 예외처리하도록 한다.
*/
try {
GCMRegistrar.checkDevice(appContext);
} catch (Exception e) {
// TODO: handle exception
Log.e(TAG, "This device can't use GCM");
return;
}
/**
* 2.SharedPreference에 저장된 RegistrationID가 있는지 확인한다.
* 없는 경우 null이 아닌 ""이 리턴
*/
String regId = GCMRegistrar.getRegistrationId(appContext);
/**
* Registration Id가 없는 경우(어플리케이션 최초 설치로 발급받은 적이 없거나,
* 삭제 후 재설치 등 SharedPreference에 저장된 Registration Id가 없는 경우가 이에 해당한다.)
*/
if(CommonUtils.isEmpty(regId)){
/**
* 3.RegstrationId가 없는 경우 GCM Server로 Regsitration ID를 발급 요청한다.
* 발급 요청된 Registration ID는 SharedPreference에 저장된다.
*/
GCMRegistrar.register(appContext, PROJECT_ID);
//SharedPreference에 저장된 Registration Id가 존재하는 경우
}else{
Toast.makeText(appContext, "Exist Registration Id: " + regId, Toast.LENGTH_LONG).show();
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
/**
* 4.앱 종료되기 전이나 종료하기 전에 GCMRegistrar.onDestroy를 반드시 호출한다.
* 호출하지 않을 경우 unRegisterReceiver오류가 발생한다.
* 해당 함수는 null이나 기타 오류에 대해 내부적으로 예외 처리하고 있으므로, 아무때나 마음껏 호출해도 된다.
*/
GCMRegistrar.onDestroy(appContext);
super.onDestroy();
}
}
'Android' 카테고리의 다른 글
앱 만들기 (코딩없어도 만들수 있다) (0) | 2020.09.23 |
---|---|
GCMIntentService.java 내용 설명(주석) (0) | 2016.06.16 |