https://firebase.google.com/docs/cloud-messaging/android/send-multiple?hl=ko
implementation 'com.google.firebase:firebase-messaging-ktx'
Firebase 콘솔로 알림 보내기
위 과정 후 다음 단계를 거쳐 어떤 앱에 보낼지 선택 후 시간 예약하여 보내면 됩니다.
테스트 메시지 전송 하기를 눌러서 토큰
받아오기
https://firebase.google.com/docs/cloud-messaging/android/send-multiple?hl=ko#kotlin+ktx
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w(TAG, "Fetching FCM registration token failed", task.exception)
return@OnCompleteListener
}
// Get new FCM registration token
val token = task.result
Log.d(TAG, token.toString())
})
로그를 찍어보면 토큰이 나옵니다.
토큰은 기기마다 다르기때문에 해당 토큰을 테스트 메시지에 넣어서 보내보면 해당 기기에만 보낼 수 있게 됩니다.
Firebase 서버로 메세지 전송 후 앱으로 메시지 전달 받기
Firebase 프로젝트 설정 -> 클라우드 메시징
API 관리에 들어가서 사용
을 클릭하고 클라우드 메시징 페이지를 새로고침 하시면 Server Key가 보입니다.
class PushMessage (
val data : Data,
val to : String
)
data class Data (
val title : String = "",
val content : String = ""
)
interface FcmAPI {
@Headers("Authorization: key=$SERVER_KEY", "Content-Type:application/json")
@POST("fcm/send")
suspend fun postNotification(@Body notification: PushMessage): Response<ResponseBody>
}
class RetrofitInstance {
companion object {
private val BASE_URL = "https://fcm.googleapis.com"
private val retrofit by lazy {
Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
val api = retrofit.create(FcmAPI::class.java)
}
}
Data
에 보낼 메시지 제목과 컨텐츠를 담아서 PushMessage
에 받을 사람의 토큰
( 2번 일부 사용자에게 보내기에서 설명한 기기 토큰값) 값과 함께 서버로 보내면 됩니다.