본문 바로가기
앱 제작/키워드 알림 앱

subscribeToTopic 한글을 주제로 구독하기 :: 푸시알림 구독 서비스 구현

by Kim Juhwan 2021. 1. 2.

1. subscribeToTopic 메서드
   1-1. 개념
   1-2. 사용법
   1-3. 문제점
   1-4. 해결방안

 

 


 

 

1. subscribeToTopic 메서드

1-1. 개념

푸시 알림을 보내는 방법에는 여러 가지가 있다.

그중 하나가 어떠한 주제를 구독한 사용자들에게 전부 메시지를 보내는 방법이다.

그리고 그때 사용하는 메서드가 바로 subscribeToTopic이다.

만약 'news'라는 주제를 구독한 사람이 있다면 그 사람들한테만 알림이 가는 것이다.

이 방법은 1대 1로 메신저를 주고받거나 소규모의 그룹에게 알림을 보낼 때가 아니라

많은 인원에게 메시지를 한 번에 보낼때 유용하다.

만약 푸시알림에 대해 더 알고 싶다면 아래 링크를 참고하면 된다.

 

[Kotlin] FCM 푸시 알림 구현하기

1. 기본개념  1-1. Firebase  1-2. FCM(Firebase Cloud Messaging)  1-3. Notification과 Data  1-4. 푸시 알림 전송 대상 2. Firebase 연동  2-1. Firebase와 app 연결  2-2. FCM 추가  2-3. 메시지 처리..

todaycode.tistory.com

 

 

1-2. 사용법

        FirebaseMessaging.getInstance().subscribeToTopic("news")
            .addOnCompleteListener { task ->
                if (task.isSuccessful) {
					// 구독 요청 성공
                } else {
                    // 구독 요청 실패
                }
            }

파이어 베이스와 연동이 되어있어야 메서드 사용이 가능하고

연동 방법은 1-1에 걸어놓은 링크에 설명되어있다.

 

subscribeToTopic 메서드에 원하는 주제를 입력하고

구독이 성공적으로 이루어졌는지 확인 및 처리를 위해 리스너를 붙여준다.

 

 

	FirebaseMessaging.getInstance().unsubscribeFromTopic("news")
            .addOnCompleteListener { task ->
                if (task.isSuccessful) {
                    // 구독 해제 요청 성공
                } else {
                    // 구독 해제 요청 실패
                }
            }

구독을 해제하는 메서드는 unsubscribeFromTopic이다.

사용법은 subscribeToTopic과 동일하다.

 

 

 

1-3. 문제점

키워드 알림 앱을 개발 중인 상황에서 이 메서드의 존재를 알게 됐을 때 속으로 "만세!!!"를 외쳤었다.

만약 이 메서드가 아니었다면 사용자들의 토큰을 전부 다 서버에 올리고, 관리하고...

사용자가 원하는 키워드도 서버에 올리고, 가져와서 크롤링한 게시글 타이틀과 비교해서 일치하는 사용자한테 일일이 보내주고... 으아악!! 정말 불편하고 비효율적일 거란 생각이 들었다.

다행히도 딱 내가 찾는 기능의 메서드가 있어서 너무나도 기뻤지만 그것도 잠시...

이 메서드의 가장 큰 문제점이 있었다.

 

 

한글을 주제로 설정하면 에러가 뜬다.

 

주제로 설정할 수 있는 것은 영어 대소문자, 숫자 그리고 몇 개의 특수문자뿐이었다.

즉, 한글은 사용할 수 없다는 것이다.

내가 원하는 건 사용자가 '장학금'이라는 키워드를 설정하면 학교 홈페이지에서 '장학금'이 포함된 게시물이 올라오면 알알림을 보내주는 기능이었는데... 한글이 사용이 안된다뇨...

 

혹시나 해서 외국 사이트도 뒤져봤는데 나랑 비슷한 처지인 사람들이 있었다.

A: 나 subscribeToTopic에 아랍어 쓰고 싶은데 어떻게 함?

B: 아랍어 안됨 영어 쓰라고 나와있음

A: 안돼. 주제는 꼭 아랍어여야 해. 영어로 바꿀 수 없어.

B: 넌 선택권이 없어. 파이어 베이스에서 그렇게 하라는데 어쩌냐

 

음... 방법이 없는 것 같았다.

 

 

오픈채팅에 물어봄

 

안드로이드 개발자 오픈 채팅에도 물어봤는데 갑분싸만 될 뿐이었다. ㅠㅠ

 

 

 

1-4. 해결방안

그러다가 생각난 것이 한글을 영어로 바꾸는 방법이다.

실수로 한영키를 안 누르고 타자를 치면 eotrmf skaruwntpdy 이렇게 작성될 때가 있지 않는가

이렇게 하면 구독 메서드를 사용할 수 있을 거라 생각했다.

그래서 한글을 영어로 바꾸는 알고리즘에 대해 잠깐 상상해봤는데 정말 끔찍했다.

생각보다 변수가 정말 많다. 어쩌면 내가 지금 만드는 앱 보다 더 어려울 수도...

그러다가 내가 딱 원하는 기능의 오픈 라이브러리를 발견했다.

 

 

738/inko

🇰🇷영타를 한글로, 한타를 영어로 변환해주는 자바스크립트 오픈소스 라이브러리. Contribute to 738/inko development by creating an account on GitHub.

github.com

 

영->한, 한->영 전부 다 지원하고

심지어 코틀린, 파이썬, 자바스크립트 등 다양한 곳에서 사용이 가능하다.

이 자리를 빌려 개발자분께 감사의 말씀을 전합니다!

 

아무튼 이렇게 해서 subscribeToTopic을 한글을 주제로 구독하는 것도 가능하다.

비록 데이터를 저장하고 불러올 때마다 변환을 해야 하지만

토큰 값을 이용해서 푸시 알림을 보내는 것보다 훨씬 나은 방법이라고 생각한다.

 

 

 


Android Studio Version : 3.6.1
Firebase Messaging : 17.3.4

inko.js open library : 1.1.1

Icons made by Alfredo Hernandez from www.flaticon.com

반응형

댓글