본문 바로가기
안드로이드

[안드로이드] 코드랩 시리즈(1) Using Android Notifications (알림1)

by keel_im 2020. 12. 4.
반응형

안드로이드 코드랩 하나씩 리뷰를 하면서 정리하려고 합니다.

이번 편은 알림입니다.

기본적으로 알림은 위와 같이 구성이 되어 있습니다. 이러한 구성들의 속성을 변경 하면서 알림을 구성을 할 수 있습니다. 카카오톡이나 타이머 등에서 나타나는 알람들, 푸쉬 메시지 라고 생각하시면 됩니다

이러한 것들을 해줄 수 있습니다. 

1단계 기본 알림 만들기

목표: 새 알림을 만들고, 사용자 메시지를 설정하고 알림을 보냄

* 알림 채널은 안드로이드 API 26 버전 부터 지원합니다. 알림을 그룹하 하여 알림을 제어할 수 있도록 합니다. 

1. 함수 구성

fun NotificationManager.sendNotification(messageBody: String, applicationContext: Context) {
} //함수를 구성해줍니다.
// 이렇게 구성을 해주면 NotificationManager 에서 확장하여 사용할 수 있습니다. 

 

val builder = NotificationCompat.Builder(
        applicationContext,
        applicationContext.getString(R.string.egg_notification_channel_id)
)

   .setSmallIcon(R.drawable.cooked_egg)
   .setContentTitle(applicationContext.getString(R.string.notification_title))
   .setContentText(messageBody)
   
   //아이콘, 제목, 내용을 설정

 

notify(NOTIFICATION_ID, builder.build())

이렇게 작성을 하시면 직접 호출이 가능합니다. 

fun NotificationManager.sendNotification(messageBody: String, applicationContext: Context) {
	val builder = NotificationCompat.Builder(
        applicationContext,
        applicationContext.getString(R.string.egg_notification_channel_id)
	)
   .setSmallIcon(R.drawable.cooked_egg)
   .setContentTitle(applicationContext.getString(R.string.notification_title))
   .setContentText(messageBody)
   //아이콘, 제목, 내용을 설정
   notify(NOTIFICATION_ID, builder.build())
} //함수를 구성해줍니다.
// 이렇게 구성을 해주면 NotificationManager 에서 확장하여 사용할 수 있습니다. 

 

2. 뷰 모델 설정

val notificationManager = ContextCompat.getSystemService(app, NotificationManager::class.java
) as NotificationManager
                notificationManager.sendNotification(app.getString(R.string.timer_running), app)

as 는 Java 에서 extends 하고 비슷합니다. 위와 같이 프로그래밍 해주면 sendNotification() 을 사용할 수 있습니다. 

 

하지만 (알림 채널이 없어서 알림 채널이 없다는 logcat 을 볼 수 있습니다)

 

2단계 알림 채널

* 알림 채널은 안드로이드 API 26 버전 부터 지원합니다. 알림을 그룹하 하여 알림을 제어할 수 있도록 합니다.  

이를 쉽게 말을 하자면 API 26 이상을 쓰는 모든 디바이스는 알림채널을 구성해주어야 한다는 의미 입니다. 

1. 함수 구성

//EggTimerFragment.kt 에서 구성합니다. 
private fun createChannel(channelId: String, channelName: String) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // API  26 이상을 의미 합니다.
        val notificationChannel = NotificationChannel(
            channelId, // 값들은 따로 설정을 해주어야 합니다. 
            channelName,
        )
        
        val notificationManager = requireActivity().getSystemService(
            NotificationManager::class.java
        ) //알림 매니저를 받아서
        notificationManager.createNotificationChannel(notificationChannel) // 채널을 만들어 줍니다
    }
}

참조

https://developer.android.com

반응형

댓글