안드로이드

[안드로이드] Notification 영역에 알림 표시하기

부르스리 2017. 2. 21. 13:38
반응형


푸시를 받거나 기타 어떤 이벤트가 있을 때 노티바에 알림을 표시해 주는 경우가 많다.


기본적인 형태는 노티바에 제목과 내용 정도 표시해 주고


선택하면 미리 설정해 놓은 인텐트가 실행되는형태가 일반적이다.


private void showNotification2() {
		Intent activityIntent           = new Intent(getActivity(), MainActivity.class);

		PendingIntent activityPIntent       = PendingIntent.getActivity(getActivity(), 0, activityIntent     , 0);

		Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
		NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getActivity())
				.setSmallIcon(R.drawable.ic_launcher)
				.setContentTitle("title")
				.setContentText("message")
				.setSound(defaultSoundUri)
				.setAutoCancel(true)
				.setContentIntent(activityPIntent);

		if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN){
			notificationBuilder.setPriority(Notification.PRIORITY_HIGH);
		}
		NotificationManager notificationManager = (NotificationManager) getActivity().getSystemService(Context.NOTIFICATION_SERVICE);
		notificationManager.notify(1, notificationBuilder.build());
	}


요런 함수를 만들어서 호출해주면 기본적인 형태의 알림이 이루어진다.



중간에 PRIORITY_HIGH 를 설정해주면 아래와 같은 화면이 뜬다.



그런데 기본적인 모양 말고 버튼을 넣는 다든가 원하는 모양으로


커스터마이징을 하고 싶을 때가 있다.


그럴때는 RemoteView 를 만들어서 설정해 주면 된다.


	private void showNotification() {
		Intent writeIntent              = new Intent(getActivity(), WriteMemoActivity.class);
		Intent activityIntent           = new Intent(getActivity(), MainActivity.class);

		PendingIntent writePIntent          = PendingIntent.getActivity(getActivity(), 0, writeIntent        , 0);
		PendingIntent activityPIntent       = PendingIntent.getActivity(getActivity(), 0, activityIntent     , 0);

		RemoteViews rviews = new RemoteViews(getActivity().getPackageName(), R.layout.notibar);
		rviews.setOnClickPendingIntent(R.id.search_btn,activityPIntent);
		rviews.setOnClickPendingIntent(R.id.write_btn,writePIntent);
		NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getActivity())
				.setSmallIcon(R.drawable.ic_launcher)
				.setAutoCancel(false)
				.setOngoing(true)
				.setContent(rviews);

		NotificationManager notificationManager = (NotificationManager) getActivity().getSystemService(Context.NOTIFICATION_SERVICE);
		notificationManager.notify(999, notificationBuilder.build());
	}


요런식으로 해주면 원하는 레이아웃을 노티바에 올릴수가 있다.


setOngoing(true) 는 클릭했다고 사라지는게 아닌 항상 유지하고 싶은 경우다.




반응형