210202
알람 기능 본문
OP.GG 프로젝트 진행하면서 필요한 기술들을 차근차근 정리해보려고한다.
알람기능은 CodeLab을 참고해서 만들었다.
https://developer.android.com/codelabs/android-training-notifications?index=..%2F..%2Fandroid-training&hl=ko#2
다음과 같이 진행된다.
1. createNotificationChannel()
먼저 사용자에게 알림을 전달해줄 NotifiactionManager 객체를 생성한다.
lateinit var notificationManager : NotificationManager
그 다음 생성한 NotificationManager 객체를 인스턴스화 시켜준다.
notificationManager = requireActivity().getSystemService(NOTIFICATION_SERVICE) as NotificationManager
// activity에서 구현시
// notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
그 다음 알림채널을 만든다.(API 수준 26부터는 모든 알림을 채널에 할당시켜야한다. 채널에서 채널의 모든 알림에 적용될 시각적/음향적 동작을 설정할 수 있다.)
알림채널 관련 문서 링크
https://developer.android.com/training/notify-user/channels?hl=ko
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O){
val notificationChannel = NotificationChannel("channelID", "channelName", NotificationManager.IMPORTANCE_HIGH)
notificationChannel.enableLights(true);
notificationChannel.lightColor = Color.RED;
notificationChannel.enableVibration(true);
notificationChannel.description = "Notification!";
notificationManager.createNotificationChannel(notificationChannel);
}
그 다음 알림을 생성한다.
알림은 내용과 동작을 설정할 수 있는 NotificationCompat.Builder 클래스를 사용하여 생성한다.
나는 getNotificationBuilder 함수에서 생성하고 return 해주는 방식으로 구현했다.
fun getNotificationBuilder() : NotificationCompat.Builder{
val notifyBuilder = NotificationCompat.Builder(requireActivity(), "channelID")
.setContentTitle("Notification Title")
.setContentText("Notifation Text")
.setSmallIcon(R.drawable.egg_icon)
return notifyBuilder
}
그 다음 sendNotification 함수를 만들어 getNotificationBuilder에서 받은 값으로 알람을 설정한다.
fun sendNotification() {
val notifyBuilder = getNotificationBuilder()
notificationManager.notify(1, notifyBuilder.build())
}
실행은 다음과같이 실행시킨다.
button.setOnClickListener {
createNotificationChannel()
sendNotification()
}
'Android > OP.GG 프로젝트' 카테고리의 다른 글
안드로이드에서 Stomp 라이브러리를 활용하여 서버와 소켓통신하기 (1) | 2021.09.13 |
---|---|
coroutine + retrofit2 사용시 java.lang.IllegalArgumentException: Unable to create call adapter for class java.lang.Object 에러 (0) | 2021.08.26 |
Comments