태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

젤리빈(Android 4.1)에서 추가된 다양한 Notification을 사용해보자!

2012.07.17 12:30



안드로이드 4.1(젤리빈)에서 다양한 형태의 알림(Notification)이 추가되었습니다.

뿐만 아니라, 이전의 약간은 '어중간했던' 알림 생성 및 공지 방법이 깔끔하게 보강되었습니다.


이번 포스트에서는 예제 프로젝트를 통해 젤리빈에서 추가된 알림을 띄워보도록 하겠습니다.


젤리빈에서 크게 3가지의 알림 스타일이 추가되었습니다. 

추가로, 알림에 '액션'을 할당할 수 있어 기존에 '알림'을 눌러 동작을 실행해야 했던 것에서 벗어 나

다양한 작업을 사용자에게 쉽게 노출시킬 수 있게 되었습니다.


허니컴부터 알림 생성을 더욱 쉽게 할 수 있는 Notification.Builder 클래스가 추가되었으며,

젤리빈에서도 이 클래스를 사용하여 다양한 형태의 알림을 쉽게 생성할 수 있습니다.


Notification.Builder 클래스를 통해 알림의 여러 속성을 지정하고,

최종으로 build() 메서드를 호출하여 Notification 객체를 생성하는 구조로 되어있습니다.

마지막으로 이를 NotificationManager의 notify() 메서드를 사용하여 띄울 수 있습니다.


BigPictureStyle


알림에 큰 이미지가 들어간 알림 스타일입니다.

알림은 다음과 같이 표시됩니다.



젤리빈에서는 각 형태의 Notification을 쉽게 생성할 수 있도록 각 알림 스타일을 미리 제공하고 있습니다.

여기에서는 Notification.BigPictureStyle을 사용하면 됩니다. BigPictureStyle 알림을 생성하는 코드와

코드가 영향을 미치는 부분을 그림으로 표현하면 다음과 같습니다.



위에서 addAction()의 intent에는 버튼을 눌렀을 때 실행할 동작을 포함하는 PendingIntent를 대입하면 됩니다.



BigTextStyle


BigTextStyle은 알림에 긴 내용의 텍스트를 표시합니다.

단순히 짧은 내용의 알림이 아니라 문자메시지 내용, 이메일 본문 등 많은 내용을 보여줘야 하는 경우에 사용하면 유용합니다.

BigTextStyle 알림은 다음과 같이 표시됩니다.



BigTextStyle 알림을 생성하는 코드와, 각 코드와 알림 요소간의 관계를 그림으로 나타내면 다음과 같습니다.




InboxStyle


InboxStyle은 이름에서 유추할 수 있듯이 '받은편지함'과 같이 여러 항목을 표시해야 하는 알림에 적합합니다.

하나의 알림에 최대 5개 항목까지 표시할 수 있습니다. 알림이 표시되는 모습은 다음과 같습니다.



InboxStyle 알림을 생성하는 코드와 알림 요소와의 연결관계는 다음과 같습니다.





ProgressBar


젤리빈에서 추가된 것은 아니지만 (ICS에서 추가됨) 유용하게 사용할 수 있으리라 생각되어 하나 더 다뤄봅니다.

컨텐츠 다운로드/업로드 상태, 혹은 작업 상태를 알림으로 쉽게 표시할 수 있는 ProgressBar 형태입니다.

다음과 같이 알림에 ProgressBar가 들어가 있습니다.



Progress는 Notification.Builder의 setProgress() 메서드를 사용하여 설정할 수 있습니다.

setProgress()의 세번째 인자를 true로 하면 Indeterminate상태의 ProgressBar를 표시하도록 할 수 있습니다.


public Notification.Builder setProgress(int max, int progress, boolean indeterminate)

알림의 진행 정도를 설정합니다.


setProgress()를 사용하는 알림을 생성하는 코드와 알림간의 상관관계를 그림으로 표현하면 다음과 같습니다.





저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

커니 유저 인터페이스/알림(Notification) , , , , , , , , ,

  1. Blog Icon
    견가가

    안녕하세요~ Notification 강좌 잘 보았습니다.

    addAction 부분 관련하여 구현할 일이 있어 구현중인데요~

    혹 Expanded 는 특별히 flag를 넣어주어야 보이는 건가요?

    단말에 올려서 확인시 expanded 로 안나오는것 같아서 collapsed 와 달리 별도로 조건이 필요한가 해서요 ^^

  2. 저도 따로 플래그를 찾지는 못했는데, Priority를 조정하면 변화가 있지 않을까 추측해봅니다 :)

  3. 멋진 글 잘 보았습니다. :)

  4. 감사합니다!

  5. Blog Icon
    스크미

    제폰이 갤3젤리빈 이거든요??그런데 올려져 있는 파일로 헤보니까 똑같이 2줄로만 나오네요??업글을 해야되는것인지..ㅜㅜ

  6. 알림바를 두 손가락으로 아래로 당기면 확장됩니다~

  7. 알림바를 두 손가락으로 아래로 당기면 확장됩니다~

  8. 알림을 두 손가락으로 쓸어내리면 숨겨진 내용이 보입니다 :)

  9. Blog Icon
    shhan

    고맙습니다. ㅠㅠ. 이틀동안 해매다가 커니님 덕분에 겨우 해결 되었네요.
    BigTextStyle 사용할때 bigText의 문구가 2줄이상 넘어갈때 처음부터 2줄이상 전부 보여주기 위해서는

    NotificationCompat.Builder builder = new NotificationCompat.Builder(Context);
    생략...
    builder.setPriority(NotificationCompat.PRIORITY_MAX); <-- 요게 핵심

    해주니깐 원하는대로 보이네요.
    참고하세요~

  10. Blog Icon
    초보자

    안녕하세요. 노티피케이션을 등록 할 때 리모트뷰를 사용해서 다양한 노티피케이션 바를 만들 수 있다는 사실을 알게 되었습니다.
    한가지 질문이 있는데 혹시 이미지뷰를 동적으로 추가해서 생성 할 순 없나요?
    이미지를 동적으로 추가 생성 했더니 노티바는 나오는데 이미지는 안나오는 결과가 나옵니다. 방법이..ㅜ?

  11. RemoteViews 에서 지원하는 뷰만 사용 가능합니다~

  12. Blog Icon
    YHB

    안녕하세요 현재 GCM을 이용한 푸시 메시지 구현중인데 현재 php 연동해서 메시지 보내는 것 까진 됐는데 이미지 url을 같이 보내서 하는 부분을 구현하고 싶은데 이것도 가능할까요?

  13. GCM 페이로드에 이미지 URL을 전송하는 것을 말씀하시는 건가요?

  14. Blog Icon
    YHB

    네 웹에서 url을 보내면 GCM에서 url을 같이 보내주면서 이미지 비트맵형식으로 뿌려주는 형태를 개발중이거든요..

  15. Blog Icon

    비밀댓글입니다

  16. Blog Icon
    JH

    Notification.builder 의 .addaction 을 이용해서 완전히 어플종료를 하고 싶은데 어떤 방법이 있을까요??