※파이어베이스 FCM의 기본 설정 글이 아닙니다.
어느날 회사에서 파이어 베이스를 작업 중 FCM을 이용한 알림(Notification) 작업을 진행하였다.
로컬 알림 (Local Notification : 클라에서 네이티브를 연동하여 시간과 텍스트를 예약 후 발송) 작업을 완료 한 후
글로벌 서비스 대응에 맞게 로컬 알림은 텍스트를 클라이언트에서 변형 후 발송 예약이 가능했지만
파이어베이스 기능 중 하나인 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을 진행하는 방법을 선택했다...
'사용자 세그먼트' 로 원하는 테스트와 결과값이 나왔다면 좋았지만...
'프로그래밍 > Unity3D' 카테고리의 다른 글
Unity Cache Server (유니티 캐시서버) (0) | 2021.12.24 |
---|---|
유니티 로그 콜백 (LogCallback) (0) | 2020.06.03 |
유니티 콘솔 로그를 이쁘게 만들자 (5) | 2020.06.02 |
Unity Spine 애니메이션 속도 1배속 고정 (0) | 2020.05.26 |
Unity3D 개발을 시작 할 때 (0) | 2020.05.21 |