모바일 앱에서 매우 중요한 스펙중하나가, 유저에게 정보를 알려줄 수 있는 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실행되도록 하기
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버전부터는 동작하지 않고 무시됩니다.
'Android 개발 > Android' 카테고리의 다른 글
ViewPager 페이지 전환시, 추상클래스 또는 Interface로 Refresh구현하기 (0) | 2017.08.04 |
---|---|
WeakReference <약한 참조> 에 대해서 정리해보자 (0) | 2017.06.30 |
Wifi / 3G 네트워크 연결 상태를 확인하는 ConnectivityManager (0) | 2017.05.23 |
안드로이드의 Multi Thread, Runnable, Looper 그리고 Handler (1) | 2017.04.09 |
SparseArray 가 무엇인가요? (0) | 2017.03.29 |
Callable 과 Runnable 뭐가 다른가요? (0) | 2017.03.18 |
Parcelable 을 사용해 데이터를 전달해 보자 (1) | 2017.03.13 |
AlarmManager 로 구현하는 안드로이드 알람 (3) | 2017.03.13 |
CompileSdkVersion, MinSdkVersion, TargetSdkVersion 그리고 BuildToolsVersion (0) | 2017.03.12 |
Activity 와 Fragment 의 lifecycle (생명주기) (1) | 2017.02.18 |
댓글