Notification
Oreo이상 버전에서 Broadcast Receiver 클래스도 만들고, 알람 매니저로 울릴 시간까지 설정해줬는데 알림이 오지 않는다면 기본적으로 알림 채널이 생성되어있는 상태인지 확인해보자.


앱 정보를 들어가보면 왼쪽 사진과 같이 Notification(한글 디바이스에서는 알림)이라는 항목이 있을 것이다. 들어가보면 오른쪽 그림처럼 Categories에 아무것도 없을텐데, 이 카테고리에 우리가 띄워줄 알림의 채널을 만들어줘야 한다.
만약 위와 같은 항목이 없다면 Oreo 이하 버전일텐데, 이 경우 채널을 따로 생성해주지 않아도 된다. 때문에 알림이 오지 않는다면 채널이 아닌 다른 부분에서 문제가 있는 경우일 것이다.
내 경우에는 사용자가 앱을 설치 후 최초로 실행했는지 여부에 따라 채널을 만들어주기로했다.
class MainActivity: AppCompatActivity() {
....
override fun onCreate() {
....
val pref = PreferenceManager.getDefaultSharedPreferences(this)
val isFirst = pref.getBoolean("isFirst", true)
if (isFirst) {
val editor = pref.edit()
createNotificationChannel()
editor.putBoolean("isFirst", false)
editor.apply()
}
}
}
PreferenceManager(현재 Deprecated 상태이다..... 이것을 대체할 다른 방법을 찾아본 뒤 포스팅을 해야겠다.)를 사용해 앱이 최초 실행되었는지 확인한다. 만약 최초 실행이라면 createNotificationChannel() 함수를 통해 채널을 생성해준다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE)
as NotificationManager
val notificationChannel = NotificationChannel(
"my_channel_id", //channel id
"테스트 알람",
NotificationManager.IMPORTANCE_HIGH
)
notificationChannel.enableLights(true)
notificationChannel.lightColor = Color.RED
notificationChannel.enableVibration(false)
notificationChannel.description = "알 채널"
notificationManager.createNotificationChannel(
notificationChannel)
}
위에 작성한대로 Oreo 이상 버전에만 해당되기 때문에, 버전을 확인한후 해당되는 버전들만 함수의 코드를 실행한다. 위와 같은 코드를 통해 알림 채널을 만들어주면 다음과 같이 채널이 생기게 될 것이다.

val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE)
as NotificationManager
먼저 알림 매니저를 불러와 선언해준다.
val notificationChannel = NotificationChannel(
"my_channel_id", //channel id
"테스트 알람", //표시될 알림 채널의 이름
NotificationManager.IMPORTANCE_HIGH //알림의 중요도
)
다음은 만들어줄 알림 채널을 정의한다. parameter로 3개가 들어가는데, 차례대로 채널 아이디, 채널 이름, 중요도이다. 채널 아이디는 앞으로 알림을 생성할 때, 어떤 알림 채널에 알림을 생성할 지 구분해주는 아이디이다. 보통 상수로 정의한 뒤, Receiver에서도 같이 사용한다. 다음은 알림 채널의 이름이다. 이게 알림이 도착하면 표시되는 이름인걸로 아는데, 시뮬레이터에서는 표시되지 않는다. 좀 더 알아봐야겠다. 마지막은 알림의 중요도인데, IMPORTANCE_HIGH로 설정해주면 위에 팝업이 뜨면서 알림이 발생한다.
'Android' 카테고리의 다른 글
| [Android] EditText 내부의 밑줄 제거하기 (0) | 2021.10.18 |
|---|---|
| [Android] 배포용 앱 개발시 주의할 점 (0) | 2021.10.09 |
| [Android/Mac] Mac에서 안드로이드 스튜디오 설치하기 (0) | 2021.10.09 |
| [Android] DataBinding(ViewBinding) 적용법 (0) | 2021.10.09 |
| [안드로이드] 이미지뷰 흑백으로 만들기 (0) | 2021.09.24 |