[본론] Unity 에서 , FCM ( Firebase Cloud Message ) 을 통해 구현한 푸시알림의 수신거부 ( 거절 )을 구현하기 .
이번 포스팅은 지난번에는 FCM에 관하여 몰랐던 내용을 추가하려고 한다.
지난번에 , 현 회사 프로젝트의 푸시알림으로 보상을 지급하는 기능을 추가할 때에 ,
유저가 푸시 알림의 수신을 거부할 경우에, 어쩔까 하다가 .
FCM 의 “주제” 를 구독하고 , 구독을 취소하는 식으로 구현을 했었는데
이게 문제를 불러왔다.
푸시 수신 아이템 지급이 두번되거나, 세번 되는 식으로 계속해서 버그가 생겼다.
(이는 사실 근본적으로는 , 지금 프로젝트의 코드 자체가 씬을 초기화 할 때에 씬을 초기화 하는 것이 아니라,
일부 요소들을 초기화하다보니, 초기화 되지 않는 클래스들이 존재했기 때문이기는 하다. 허나, 그렇다고 해서
기존에 비효율적인 시스템에 계속 새 시스템을 엮으면, 이 프로젝트는 점점 더 꼬이게 될 것이라고 생각했고 ,
새로 추가되는 기능이 만약 독립적으로 존재할 수 있다면 , 그게 여러모로 더 깔끔 할 것이라 생각해 보완하기로 했다. )
FCM 의 “주제”라는 기능은 구독하고 취소해서 수신거부를 구현하라고 있는 게 아니었다.
너무 당연한 것이, 주제 기능은 푸시를 끄고 켜는 것이 아니라, 일단 수신하고 세부적으로 필터링 하는 것에 가깝기 때문이다 .
답은 의외로 심플했다.
using Firebase.Messaging;
// 푸시 알림을 받지 않는다.
FirebaseMessaging.TokenRegistrationOnInitEnabled = false ;
// 푸시 알림을 받는다 ( 기본 설정 )
FirebaseMessaging.TokenRegistrationOnInitEnabled = true ;
위와 같이 하면, 깔끔하게 구현된다.
구독으로 수신거부를 구현할 때에도 , 위 같은 기능이 당연히 있겠지 싶었지만,
핑계를 대자면 , 프로퍼티 이름이 그다지 직관적이지 않아서
솔직히는 , 제대로 문서를 찾아보지 않아서
착각했던 것 같다.