FCM 사용하여 푸쉬 알람

BongKu·2023년 11월 7일
0

Android

목록 보기
24/30

SDK 추가

https://firebase.google.com/docs/cloud-messaging/android/send-multiple?hl=ko

implementation 'com.google.firebase:firebase-messaging-ktx'

Firebase 콘솔로 알림 보내기

1. 모든 사용자에게 보내기

위 과정 후 다음 단계를 거쳐 어떤 앱에 보낼지 선택 후 시간 예약하여 보내면 됩니다.

2. 일부 사용자에게 보내기


테스트 메시지 전송 하기를 눌러서 토큰 받아오기

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 서버로 메세지 전송 후 앱으로 메시지 전달 받기

server key

Firebase 프로젝트 설정 -> 클라우드 메시징

API 관리에 들어가서 사용 을 클릭하고 클라우드 메시징 페이지를 새로고침 하시면 Server Key가 보입니다.

API 생성

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>

}

RetrofitInstance 생성


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번 일부 사용자에게 보내기에서 설명한 기기 토큰값) 값과 함께 서버로 보내면 됩니다.

profile
화이팅

0개의 댓글