내가 일하며 알게 된 프로그래밍
article thumbnail

※파이어베이스 FCM의 기본 설정 글이 아닙니다.

 

어느날 회사에서 파이어 베이스를 작업 중 FCM을 이용한 알림(Notification) 작업을 진행하였다. 
로컬 알림 (Local Notification : 클라에서 네이티브를 연동하여 시간과 텍스트를 예약 후 발송) 작업을 완료 한 후
글로벌 서비스 대응에 맞게 로컬 알림은 텍스트를 클라이언트에서 변형 후 발송 예약이 가능했지만
파이어베이스 기능 중 하나인 FCM에서는 언어 변경을 지원하지 않았다.
따라서 FCM에서 지원하는 기능인 '사용자 세그먼트'에서 '국가/지역' 을 설정하여 보내면 간단한 일이라고 생각되었다.

사용자 세그먼트를 통한 FCM 준비

위와 같이 설정 후 대한민국에서는 한글로 대한민국 제외한 국가들 대상으로는 번역된 텍스트로 전송을 하면 되리라 라고 생각했지만...
무슨일인지 원하는 결과값대로 FCM이 발송 되지 않았다.

 

 


사용자 세그먼트에서 '앱' 을 대상으로만 설정하고 FCM을 발송 시 문제없었다.
하지만 국가/지역, 버전, 유저 카테고리 등 '앱' 이외의 타겟을 설정 후 발송 할 경우 원하는 대로 테스팅이 되지 않았다.
이제부터 삽질시작.
-파이어베이스 SDK 버전과 빌드설정에서 닷넷설정 확인
-Player Setting의 APK 버전 확인

 

-메니페스트 수정

<meta-data android:name="firebase_messaging_auto_init_enabled" android:value="false"/> 
<meta-data android:name="firebase_analytics_collection_enabled" android:value="false"/> 

 

-디바이스 토큰을 등록 여부 확인

//FCM 사용
Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = true;

//FCM 미사용
Firebase.Messaging.FirebaseMessaging.TokenRegistrationOnInitEnabled = false;

 

-파이어베이스 초기화가 잘되는지 확인

Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => 
{ 
	Firebase.DependencyStatus dependencyStatus = task.Result; 
	if (dependencyStatus == Firebase.DependencyStatus.Available) 
	{ 
		//Firebase 초기화 성공
	}
    else
    {
    	//파이어베이스 업데이트 확인
        //혹은 기타 이외의 에러
    }
});

 

 

등등.. 여러가지 작업들을 해봤지만

문제는 항상 '앱' 이외의 다른 설정값을 설정하고 발송할 때만 원하는 결과값이 나오질 않았다.


결국 '사용자 세그먼트'가 아닌 '주제' 를 통하여 FCM을 보내기로 결정했다.

Firebase.Messaging.FirebaseMessaging.SubscribeAsync("등록할 주제값");
Firebase.Messaging.FirebaseMessaging.UnsubscribeAsync("등록 취소할 주제값");

주제 구독 설정, 구독 해제를 통하여 파이어베이스에 주제값이 쌓인다면

메시지 주제 리스트에

주제에 노출되는 리스트

해당 키값들이 노출이 될 것이다.

테스트는 확실하게 진행되었다.


한국어, 영어를 제외한 기타 추가 언어들을 설정하기 위해선

코드에서 주제 구독, 해제를 통한 코드를 더 추가해야겠지만

테스트가 제대로 이루어지지 않는 '사용자 세그먼트' 보다는 확실하게 테스트가 이루어지는 '주제' 로

FCM을 진행하는 방법을 선택했다...

 

'사용자 세그먼트' 로 원하는 테스트와 결과값이 나왔다면 좋았지만...

profile

내가 일하며 알게 된 프로그래밍

@CtrlVGames