private fun logRegToken() {
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "Fetching FCM registration token failed", task.exception)
return@OnCompleteListener
}
// 새 FCM 등록 토큰 받기
val token = task.result
SharedData.setSharedData(applicationContext, SharedData.PUSH_TOKEN, token)
Utils.Log("FCM Registration token: $token")
})
}
{
"to": "토큰값",
"priority": "high",
"data": {
"title": "fcm test",
"body": "postman"
}
}
전송을 누르면 잘 들어오는 볼 수 있다!
이렇게 받은 데이터를 TextView 에 업데이트 시켜주고 싶다
EventBus 를 이용하여 메인으로 데이터를 보내서 업데이트 시켜주려한다.
// Event Bus
implementation 'org.greenrobot:eventbus:3.3.1'
데이터를 담아 보낼 객체를 생성한다
data class ResultModel(
var title: String,
var body: String
): Serializable
EventBus.getDefault().post(event)와 같은 형태로 이벤트를 발행한다
// 메시지 수신
override fun onMessageReceived(message: RemoteMessage) {
super.onMessageReceived(message)
if (message.data.isNotEmpty()) {
val title = data["title"]
val body = data["body"]
val data = ResultModel(title,body)
// EventBus를 이용하여 이벤트 발생
EventBus.getDefault().post(data)
}
}
이벤트 버스로 데이터를 받을 액티비티에 EventBus 구독 등록/해제를 해준다
override fun onStop() {
super.onStop()
// EventBus 구독 해제
EventBus.getDefault().unregister(this)
}
override fun onStart() {
super.onStart()
// EventBus 구독 등록
EventBus.getDefault().register(this)
}
@Subscribe(threadMode = ThreadMode.MAIN) // Subscribe 어노테이션 등록
fun onEvent(result: ResultModel) { // 이벤트 수신 시 이 콜백 메소드 실행
with(binding) {
tvTitle.text = result.title
tvBody.text = result.body
}
}