2014년 8월 9일 토요일

[android] NotificationCompat and its Builder

 android, NotificationCompat and its Builder

NotificationCompat.Builder.setSmallIcon( int resId );

위와 같이 setSmallIcon 이 지정되지 않으면 notification 은 등록이 아예 되지 않음.
Small Icon 은 status bar 에 뜨는 아이콘과 notification view 안의 우측에 표시됨.

만약 large icon 이 지정되지 않으면 notification view 안에 있는 icon 도 이녀석으로 지정됨.
만약 large icon 이 지정되어 있다면 content info 자리에 icon 이 같이 표시됨.



NotificationCompat.Builder.setLargeIcon( Bitmap bitmap );

Notification View 안에 있는 icon 이 지정됨.



NotificationCompat.Builder.setContentInfo( CharSequence text );
NotificationCompat.Builder.setContentText( CharSequence text );
NotificationCompat.Builder.setContentTitle( CharSequence text );
NotificationCompat.Builder.setNumber( int count );



NotificationCompat.Builder.setAutoCancel( boolean );

기본값은 false 로, notification 을 클릭했을 때 notification 이 사라지지 않는다.
클릭했을 때 사라지게 하려면 setAutoCancel 값을 true 로 주어야 한다.



NotificationCompat.Builder.setWhen( long );

Notification 의 시간 표시를 설정할 수 있다.


NotificationCompat.Builder.addAction(int resId, CharSequence title, PendingIntent pIntent);

Notification View 의 하단에 PendingIntent 를 실행하는 버튼들을 추가할 수 있다.
최대 3개까지 추가할 수 있으며, 이 녀석을 사용하기 위해서는

NotificationCompat.Builder.setPriority( int priority );

를 통해서 NotificationCompat.PRIORITY_HIGH 로 설정되어야 한다.

** 이 녀석은 Android 4.1 이상에서만 작동한다.



NotificationCompat.Builder.setFullScreenIntent(PendingIntent pIntent, boolean highPriority);

Notification 을 등록하면서 바로 pendingintent 를 실행시킨다.
정말 엄~청나게 중요한 일이 아니면 사용하지 않는 것이 추천된다.
예를 들면 전화받기라던지, 알람시계라든지 등의 경우를 제외하면 말이다.
만약 그 외의 상황에서 사용하고 싶다면 이 방법을 disable 할 수 있는 option 을 주는 것이 좋다.



NotificationCompat.Builder.setOngoing( boolean ongoing );

ongoing noti 는 notification panel 에서 상단으로 정렬된다.
ongoing noti 는 X close button 이 없다. 그래서 Clear all(지우기) button 에 영향을 받지 않는다.



NotificationCompat.Builder.setProgress( int max, int progress, boolean indeterminate );

Notification Bar 에 progress bar 를 띄운다.
Indeterminate 의 경우는 bar 의 형태를 띄긴 하지만, 정확한 progress 는 알 수 없다.


NotificationCompat.Builder.setSubText( CharSequence text );

세번째 줄에 표시되는 text.
이 녀석을 setProgress 와 함께 표시하면 안 된다. 같은 위치이기 때문.
framework 에 따라 지원하지 않을 수 있기에 사용하지 않는 것이 강추.



NotificationCompat.Builder.setTicker( CharSequence tickerText );

noti 를 띄울 때 status bar에 함께 표시되는 내용을 정의한다.



NotificationCompat.Builder.setUsesChronometer( boolean b );

noti 를 띄울 때 timestamp 가 아닌 stopwatch 를 띄워준다.



참고사항

GingerBread ( 갤럭시 S ) 의 경우 setContentIntent 를 해주지 않으면 noti 가 아예 안 뜬다.
setProgress 도 작동 안 한다.
결론적으로 framework 에서 지원하지 않는 경우가 있기 때문에 이럴 경우 기획을 바꾸던가 해야한다.

댓글 없음:

댓글 쓰기