본문 바로가기
프로그래밍/Android

안드로이드 Notification

by Daniel.kwak 2018. 12. 7.

애플리케이션에 특정 이벤트(문자 메세지 도착이나 SD카드를 꽃았을 때)가 왔을때 사용자에게 그 사실을 인지시켜주어야 한다. 

Notification은 화면 상단바에 표시되며, 해당 Notification을 확인하고 지우기 전까지는 계속 상단바 리스트에 남아있고 클릭하면 원하는 컴포넌트를 호출할 수 있다.


Notification을 사용하기 위해서는 크게 3가지를 구성해야 한다.

  • TickerText(상태 표시줄에 표시되는 텍스트와 이미지)
  • Notification List에 표시되는 항목 
  • Notification List에서 항목을 눌렀을 때 수행할 작업

Notification 객체 생성하기
Notification 객체를 생성하면서 상태 표시줄에 표시되는 문자 및 아이콘 이미지를 생성자로서 넣어준다. 


Notification notification = new Notification (int icon , CharSequence tickerText , long when);

icon : 상태표시줄에 표시할 아이콘

tickerText : 상태 표시줄에 표시할 텍스트

when : notification을 표시할 시각 



상태표시줄에 Notification 표시하기 - Deprecated

생성한 Notification을 상태표시줄에 표시하기 위해 setLatestEventInfo()메소드를 이용한다. 


notification.setLatestEventInfo(Context context , CharSequence contentTitle ,
 CharSequence contentText , PendingIntent contentIntent);
  • context : 컴포넌트 / 애플리케이션 컨텍스트 객체
  • contentTitle : NotificationList에 표시될 notification의 제목
  • contentText : NotificationList에 표시될 notification의 내용
  • contentIntent : 항목을 눌렀을 때 수행할 작업 
나머지는 다 알 수 있는 내용이고, 알람을 눌렀을때 수행할 작업으로 다른 컴포넌트를 호출할 때 intent대신 pendingIntent를 사용한다. intent가 어떤 내용을 할지에 대한 내용만 담고 있다면, pendingIntent는 객체 초기화 과정에서 호출할 컴포넌트를 지정하게 된다. 예를 들어 액티비티를 호출하는 pendingIntent의 초기화 과정을 살펴보자. 

 PendingIntent intent = PendingIntent.getActivity(Context context , int requestCode , Intent intent , int flags);
  • context : 컨텍스트 객체
  • requestCode : 요청코드
  • intent : 처리할 작업을 포함하는 인텐트 객체
  • flags : 기타 액티비티 실행 옵션들

이제 notification을 띄울 준비가 끝났으면 NotificationManager를 통해 실제로 띄워보자.

NotificationManager nm = (NotificationManager)getSystemService(NOTIFICAION_SERVICE);
nm.notify(NOTIFICAION_ID , notification); 


만들어진 Notification을 NotificationManager를 통해 넘겨주면, NotificationManager가 객체의 내용대로 표시해준다. 이 때 생성하면서 넘긴 NOTIFICAION_ID는

추후 이 noticitaion을 해제하는데 사용된다.