Android에서 다운스트림 메시지의 전송 우선순위로 보통 및 높은 우선순위를 할당할 수 있습니다. 보통 및 높은 우선순위 메시지를 전송하면 다음과 같이 작동합니다.
보통 우선순위: 데이터 메시지의 기본 우선순위입니다. 보통 우선순위 메시지는 기기가 절전 모드가 아닐 때 즉시 전송됩니다. 기기가 잠자기 모드일 때는 기기가 잠자기 모드를 종료할 때까지 배터리를 절약하기 위해 전송이 지연될 수 있습니다. 새로운 이메일 알림, UI 동기화 유지, 백그라운드 앱 데이터 동기화와 같이 시간이 크게 중요하지 않은 메시지의 경우 보통 전송 우선순위를 선택하세요.
Android에서 앱의 백그라운드 데이터 동기화를 요청하는 우선순위가 보통인 메시지를 수신하면 네트워크를 사용할 수 있을 때 처리하도록 WorkManager에서 작업을 예약할 수 있습니다.
높은 우선순위: FCM이 높은 우선순위 메시지를 즉시 전송하려고 시도하며 필요한 경우 FCM에서 기기의 절전 모드를 해제하고 매우 제한된 네트워크 액세스를 포함하여 제한된 일부 처리 작업을 실행할 수 있습니다. 높은 우선순위 메시지는 대개 사용자와 앱 또는 알림 사이의 상호작용을 발생시킵니다.
Android의 메시지 처리 및 우선순위 해제
Android에서 높은 우선순위 메시지는 시간에 민감하고 사용자에게 표시되는 콘텐츠에 사용해야 하며, 사용자에게 알림이 표시되어야 합니다. FCM이 메시지가 사용자에게 표시되는 알림으로 이어지지 않는 패턴을 감지하면 메시지의 우선순위가 보통으로 해제되거나 Google Play 서비스에서 처리하도록 위임될 수 있습니다.
FCM은 메시지의 우선순위 해제 또는 프록시 사용 여부를 결정할 때 7일 간의 메시지 동작을 사용합니다. 애플리케이션의 각 인스턴스에 대해 개별적으로 결정합니다. 높은 우선순위 메시지에 대한 응답으로 알림이 사용자에게 표시되는 방식으로 표시되면 향후 높은 우선순위 메시지는 영향을 받지 않습니다.
Google Play 서비스로 알림 위임
특정 기준을 충족하는 우선순위가 높은 알림 메시지(데이터 메시지 아님)는 우선순위가 해제되는 대신 Google Play 서비스에서 프록시됩니다. 즉, Google Play 서비스에서 앱을 시작하지 않고도 앱 대신 알림을 표시할 수 있습니다. 이렇게 하면 Android 기기의 전반적인 사용자 환경이 개선됩니다.
프록시된 알림 메시지로 인해 수신 메시지와 관련된 분석이 보고되는 방식이 달라집니다.
- 프록시된 알림과 관련된 분석을 보고하려면 앱에서 FCM SDK 버전 24.0.0 이상을 사용해야 합니다.
- 프록시된 알림 도입 전에 비하여 수신 메시지 수가 감소하거나 지연이 발생할 수 있습니다. 이는 프록시된 알림에 대한 분석은 앱이 시작된 후에만 보고되며 알림으로 인해 앱이 열리지 않으면 전혀 보고되지 않을 수 있기 때문입니다.
이러한 방식으로 알림 메시지를 프록시 처리하는 것은 Android Q 이상 및 Google Play 서비스 버전 19054000 이상을 사용하는 앱의 기본 동작입니다. HTTP v1 API를 통해 전송되는 메시지는 프록시되지만, Firebase 콘솔 또는 기존 API를 통해 전송되는 메시지는 프록시되지 않습니다. 이 기능은 현재 베타 버전이며 변경될 수 있습니다.
기기 배터리와 메모리에 도움이 되도록 위임을 사용 설정한 상태로 두는 것이 좋지만 다음과 같은 방법으로 이 동작을 선택 해제할 수 있습니다.
- 앱 기준: 앱 매니페스트에
<meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>
지시어를 추가합니다. - 앱 인스턴스 기준: 앱 인스턴스의 경우 특정 사용 사례에 따라 앱의 UI 흐름에서
fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!>
를 설정합니다. - 메시지 기준: 전송 요청의
AndroidNotification
객체에서proxy
키를DENY
로 설정합니다.
Android에서 메시지 우선순위 해제 측정
개별 메시지. 전송 시 getPriority()의 전송 우선순위와 getOriginalPriority()의 원래 우선순위를 비교하여 개별 메시지의 우선순위가 해제됐는지 여부를 확인할 수 있습니다.
전체 메시지. FCM Aggregate Delivery Data API는 Android로 전송되는 전체 메시지 중 몇 퍼센트의 우선순위가 해제되었는지 보고할 수 있습니다. 합산 데이터 보고서에서 일부 메시지가 생략될 수도 있지만 메시지 우선순위 해제 비율을 전체적으로 볼 수 있습니다. API 쿼리에 대한 자세한 정보와 샘플 코드는 집계 전송 데이터에 관한 자료를 참고하세요. API 탐색기에서 확인할 수도 있습니다.
프록시된 알림 프록시된 알림은 현재 FCM 또는 GA 전송 측정항목에 포함되지 않으므로 알림 전송 측정항목이 최대 15% 감소할 수 있습니다. 프록시된 메시지에 관한 보고의 경우 FCM Aggregate Delivery Data API를 사용하세요.
ProxyNotificationInsightPercents
는 프록시 사용에 성공한 알림의 비율과 프록시 사용에 성공하지 못한 메시지에 관한 세부정보를 보고합니다.
문제 해결
앱 인스턴스에 알림이 사용 설정되어 있는지 확인합니다. 사용자가 앱의 알림 권한을 사용 중지하면 어떤 알림도 게시되지 않으므로 메시지 우선순위가 해제됩니다. 애플리케이션 인스턴스에 우선순위가 높은 메시지를 보내기 전에 알림이 사용 설정되었는지 확인해야 합니다.
알림을 게시하기 전에 서버를 호출하지 않습니다. Android 모바일 사용자 중 일부는 지연 시간이 긴 네트워크를 사용하므로 알림을 표시하기 전에 서버에 연결하는 것을 피해야 합니다. 허용된 처리 시간이 끝나기 전에 서버를 다시 호출하면 지연 시간이 높은 네트워크의 사용자에게 위험 부담이 있을 수 있습니다. 그 대신 FCM 메시지에 알림 콘텐츠를 포함하고 즉시 표시하세요. Android에서 추가 인앱 콘텐츠를 동기화해야 한다면 백그라운드에서 처리하도록 WorkManager에서 작업을 예약할 수 있습니다.