Jiwift

[iOS/Swift] FCM(Firebase Cloud Messaging) Topic(주제)를 구독하고 메세지 받기 본문

라이브러리/Firebase

[iOS/Swift] FCM(Firebase Cloud Messaging) Topic(주제)를 구독하고 메세지 받기

지위프트 2023. 6. 13. 00:59
반응형

 

 

처음 FCM을 접하면 Token을 사용한 방법으로 연습하게됩니다. 그래서 이번에는 Topic(주제)를 통한 메세지 처리를 알아보도록 합니다. 

 

이미 알고 오신 분들은 코드만 필요하시니 먼저 코드를 보여주고 왜 사용하는지 정리하도록 하겠습니다.

Messaging.messaging().subscribe(toTopic: "kimjitae") { error in
    if let error = error {
        print("구독 실패: \(error.localizedDescription)")
    } else {
        print("구독 성공")
    }
}

 

 

FCM Token을 사용한다면, 유저마다 토큰을 서버에서 알고있어야합니다.

 

 서버는 원하는 상황에 타겟 유저의 토큰을 DB에서 읽고 Push를 보내게됩니다. 이런 방식을 사용하면 다양한 로직을 적용해서 자유도 높은 구현을 가능하게합니다. 

 

  반대로 토픽 구독 방식은 유저 한명이 아닌 타겟 그룹?에게 한번에 메세지를 보내는 방식입니다. 즉 자동차라는 주제를 구독한 사람들에게 자동차라는 메세지를 모두 보내는 방식입니다. 아래는 파이어베이스 문서에 적힌 내용입니다.

 

"FCM 주제 메시징을 사용하면 게시/구독 모델을 기반으로 특정 주제를 구독하는 여러 기기에 메시지를 보낼 수 있습니다. 필요에 따라 주제 메시지를 작성하면 FCM에서 라우팅을 처리하여 올바른 기기에 정확히 전송합니다."

 

 Token 방식을 사용한다면 유저 DB에서 특정 조건을 만족하는 Select하는 과정을 진행하거나, 이미 그룹핑된 유저 테이블들을 읽어서 전송하는 과정을 반복해야 하지만, Topic 방식을 사용한다면 사전에 특정 Topic을 구독해두고 서버에서 주제를 향해서 한번 전송하게되면 여러 단말기에 메세지가 도달하게됩니다.

 

 (주제를 세분화해서 유저마다 생성한다면 Token을 주고 받을 필요 없고, 따로 관리하지 않아도 유저별로 컨트롤이 가능하지 않을까 생각이 듭니다.) 

 

앱단에서 필요한 상황이 생기면 특정 주제를 구독하면되기 때문에 위 코드를 원하는 상황에 사용하면 될 것 같습니다. 

(당연하지만 앱 실행 후 APNs 혹은 FCM 설정이 끝나고 수행해야합니다.)

 

 

 

반응형