-
Firebase Clounding Message 구현 (3) - Notification 구현Android/FireBase 2019. 8. 29. 20:11
앞서 기본적인 셋팅을 하였고 이번 시간에는 실제 파이어데이터에서 알림을 보냈을때 해당 알림을 받아 실제 기기에서 Notification을 출력시켜보는 기능을 구현해보도록 하겠습니다.
NotificationChannel 구현하기
object NotificationChannelManager { const val channelId = "one-channel" private const val channelName = "My Channel One" private const val channelDescription = "My Channel One Description" var channel: NotificationChannel? = null @RequiresApi(Build.VERSION_CODES.O) get() { return field ?: NotificationChannel( channelId, channelName, NotificationManager.IMPORTANCE_DEFAULT ).apply { description = channelDescription enableLights(true) lightColor = Color.RED enableVibration(true) vibrationPattern = longArrayOf(100, 200, 300) } } }
먼저 Android Oreo 버전 부터는 채널이라는 개념이 추가되어서 언제든 가져다 사용할 수 있도록 위와 같이 구성을 해보도록 합시다.
Notification 구성하기
override fun onMessageReceived(remoteMessage: RemoteMessage) { super.onMessageReceived(remoteMessage) val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationBuilder: NotificationCompat.Builder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val channel = NotificationChannelManager.channel!! notificationManager.createNotificationChannel(channel) NotificationCompat.Builder(baseContext, NotificationChannelManager.channelId) } else { NotificationCompat.Builder(this) } with(notificationBuilder) { setSmallIcon(android.R.drawable.ic_notification_overlay) setWhen(System.currentTimeMillis()) setContentTitle(remoteMessage.notification!!.title) setContentText(remoteMessage.notification!!.body) setDefaults(Notification.DEFAULT_SOUND or Notification.DEFAULT_VIBRATE) setAutoCancel(true) } val pendingIntent = PendingIntent.getActivity( this, 0, Intent(this, MainActivity::class.java), PendingIntent.FLAG_UPDATE_CURRENT ) notificationBuilder.setContentIntent(pendingIntent) notificationManager.notify(2222, notificationBuilder.build()) }
코드는 그렇게 어렵지 않습니다. 앞서 강의한 Notification에서 약간의 변형을 주었고 위의 코드에서 주목해야 할 점은 바로 remoteMessage라는 인자 입니다.
만약 본인이 서버에서 데이터를 어떻게 주던 고정적인 메시지를 출력하고 싶다! 하시는 분은
serContentTitle과 setContentText를 직접 설정해주시면 되고,
서버에서 던져주는 데이터를 기반으로 출력하고 싶다! 하시는 분들은
remoteMessage의 notification의 title 및 body를 넣어주시면 됩니다.
테스트 해보기
Firebase Console에 접속하여서 좌측 하단 성장 탭의 CloudMessaging을 들어가줍니다.
Send Yout First Message를 눌러 테스트를 시도해보도록 합시다.
알림 타이틀과 텍스트를 입력해주신 뒤 테스트 메시지 전송 버튼을 눌러주시고
개발탭에 Database에 들어가셔서 token 컬렉션에 있는 FCM 토큰을 추가해주신 후 테스트를 눌러주시면 휴대폰에 정상적으로 Notification이 출력됩니다.
다음시간에는 이러한 노티피케이션을 날릴때 도움을 주는 백엔드 서버 Function에 대해서 알아보도록 하겠습니다.
'Android > FireBase' 카테고리의 다른 글
Firebase Clounding Message 구현 (2) - 서비스 구현 (0) 2019.08.05 Firebase Clounding Message 구현 (1) - 기본적인 환경 구축 (0) 2019.08.05