본문 바로가기
Android 개발/Android

안드로이드 Notification 구현하기 feat. Big View

by Developer88 2017. 3. 21.
반응형

모바일 앱에서 매우 중요한 스펙중하나가, 유저에게 정보를 알려줄 수 있는 Notification인데요.

오늘은 이 기능에대해서 정리해보려고 합니다.


유저에게 정보를 알려줄 때에 사용하는 클래스는 NotificationBuilder 클래스인데요.

하위호환성을 위해서, 구글에서 제공해주는 Support라이브러리의 NotificationCompat.Builder클래스를 사용해야합니다.


1. Noti버튼 XML 생성


먼저 아래와 같이, Notification을 생성하는 버튼을 XML파일에서 만들겠습니다.




2. Notification Builder 필수 메소드 구현


제일 먼저 구현해야하는 것은 NotificationCompat.Builder클래스입니다.

필수로 구현해야하는 메소드는, 아래에서 구현한 것과 같은데요.

아이콘을 set하는 setSmallIcon(), 타이틀을 set하는 setContentTitle(), 내용을 set하는 setContextText() 세가지 입니다.



한가지 주의하실 점은, android.support.v4.app 을 import 해야한다는 점입니다.




3. Notification Builder 추가 구현


위에서 노티를 받는데 필수적인 부분만 구현하였는데요.

추가적으로 노티받는 방법이라든가 여러가지를 추가해보겠습니다.


먼저, setDefaults()메소드를 통해서 노티받는 방법을 선택하는데요. 빛을 이용하는 것, 진동, 사운드 세가지가 있는데, 여기서는 sound를 선택하겠습니다.


다음으로 setLargeIcon을 이용해서 largeIcon을 보여지도록 하는데요. 노티센터에서 보여지는 좌측의 큰 아이콘을 이야기 합니다.

(smallIcon은 시스템바에 표시되는 작은 아이콘을 가르키구요)

그런데, 이 메소드는 bitmap을 필요로 합니다. BitmapFactory의 도움을 받아서 mLargeIconForNoti에 Bitmap을 만들어서 담았서 전달하였습니다.

여기서 쓰는 LargeIcon의 사이즈는 64dp를 가르킵니다


setAutoCancel은 노티를 유저가 터치하였을때 자동으로 사라지도록 할것인지에 관한 것입니다.

setPriority는 노티의 중요도를 설정하는 것이구요.




3. Notification 누르면, Activity실행되도록 하기


그저 노티만 받는데 그치지 않고, 해당 정보에 관한 액티비티로 갈 수 있도록 구현해 보겠습니다.
이 때 사용하는 것은 PendingIntent인데요.
먼저 PendingIntent를 정의하고, setContentIntent()메소드에 인자로 넘겨줍니다.
물론 PendingIntent에 인자로 Intent를 넘겨주어야 하구요.



4. Noti 보내기


이제 준비는 다 되었습니다. 시스템의 NotificationManager를 가져와서, notify()메소드를 사용해서 노티를 보내주기만 하면됩니다.

notify의 첫번째 인자는 id번호인데요. Notification을 업데이트할때 사용할 수 있습니다.




이제 앱을 실행시킨 후에, 버튼을 눌러보면, 알림소리가 나고, Notification 센터를 보면, 아래와 같이 저희가 만들었던 Notification 을 볼 수 있습니다.




5. Big View 이용하기


안드로이드 에서는 위에서 나온 것과 같은 Notification View 외에도, 

아래에 취소와 확인을 할 수 있는 View를 제공해주고 있는데요.

이것을 Big View라고 합니다.


NotificationBuilder에 추가할 부분은 3가지 인데요.

먼저 setStyle()에서 아래와 같이 텍스트를 추가합니다.


그다음으로 두가지 액션을 addAction을 통해서 추가해주는데요.

첫번째 인자가 icon, 두번째 인자가 텍스트명, 세번째 인자가 PendingIntent인데요.

이 PendingIntent를 이용해서, 취소나 확인에 따라서 intent를 전달하도록 하면 됩니다.




실행시키면 아래와 같은 화면을 볼 수 있습니다.




참고로 이 Big View는 안드로이드 4.1버전부터는 동작하지 않고 무시됩니다.


728x90

댓글