메시지 우선순위 설정 및 관리

Android에서 다운스트림 메시지의 전송 우선순위로 보통 및 높은 우선순위를 할당할 수 있습니다. 보통 및 높은 우선순위 메시지를 전송하면 다음과 같이 작동합니다.

  • 보통 우선순위: 데이터 및 알림 메시지의 기본 우선순위입니다. 보통 우선순위 메시지는 기기가 절전 모드가 아닐 때 즉시 전송됩니다. 기기가 잠자기 모드일 때는 기기가 잠자기 모드를 종료할 때까지 배터리를 절약하기 위해 전송이 지연될 수 있습니다. 새로운 이메일 알림, UI 동기화 유지, 백그라운드 앱 데이터 동기화와 같이 시간이 크게 중요하지 않은 메시지의 경우 보통 전송 우선순위를 선택하세요.

  • 높은 우선순위:FCM이 높은 우선순위 메시지를 즉시 전송하려고 시도하며 필요한 경우 FCM에서 기기의 절전 모드를 해제하고 매우 제한된 네트워크 액세스를 포함하여 제한된 일부 처리 작업을 실행할 수 있습니다. 높은 우선순위 메시지는 대개 사용자와 앱 또는 알림 사이의 상호작용을 발생시킵니다.

높은 우선순위 메시지와 일반 우선순위 메시지 중에서 결정

일반 업데이트에는 보통 우선순위 메시지가 적합하지만 긴급한 문제나 작업을 즉시 전송해야 하는 경우 높은 우선순위를 선택하세요. 보통 우선순위 메시지의 전송 시간은 잠자기 모드의 영향을 받을 수 있으므로 사용자에게 표시되는 대부분의 알림을 높은 우선순위로 설정하면 알림이 즉시 전송됩니다. 예를 들어 채팅 메시지, 계정 문제, 음식 배달 업데이트와 같은 알림은 우선순위가 높게 설정되어야 합니다.

높은 우선순위 및 보통 우선순위 메시지의 메시지 처리

Android 기기에서 수신되는 높은 우선순위 알림과 보통 우선순위 알림 모두 onMessageReceived 핸들러에서 메시지 페이로드를 처리하는 데 몇 초가 주어집니다. 메시지 페이로드의 비동기 처리가 필요한 알림의 경우 WorkManager와 같은 구성을 사용하는 것이 좋습니다. onMessageReceived 핸들러에 할당된 시간이 초과될 수 있기 때문입니다.

우선순위가 높은 메시지의 경우 Android WorkManager를 사용하여 신속 처리 작업을 예약하여 이러한 알림에 우선순위가 지정되고 완료될 때까지 실행되도록 할 수 있습니다.

우선순위가 보통인 메시지의 경우 Android WorkManager를 사용하여 일반 OneTimeWorkRequest를 예약할 수 있습니다. 이렇게 하면 우선순위 처리를 사용하지 않고도 추가로 필요한 작업이 처리됩니다.

메시지 우선순위 설정

Admin SDK, FCM REST API, Firebase Console을 사용하여 사용자에게 알림을 보낼 수 있습니다. Admin SDK 및 FCM REST API에서 우선순위 설정을 변경하려면 메시지 JSON 페이로드를 업데이트해야 합니다. 다음 코드 샘플을 사용하여 우선순위를 높음으로 설정하는 방법을 확인할 수 있습니다. Console에서 전송되는 알림의 경우 Android 관련 알림 필드를 설정할 수 없습니다.

 {
  "message": {
      "notification": {
          "body": "Purchase exceeding $500 detected",
          "title": "Credit card purchase"
      },
      "data": {
          "purchaser": "Your child",
          "items": "Gravity Defier Sneakers"
      },
      "android": {
          "priority": "high"
      },
      "apns": {
          "headers": {
              "apns-priority": "5"
          }
      }
  }
}

잠자기 모드에서 우선순위가 높은 알림 테스트

사용자가 우선순위가 높은 알림을 수신할 때 올바르게 수신되고 처리되는지 확인하려면 다음 안내에 따라 알림을 테스트하세요.

  1. 잠자기 모드로 앱 테스트의 안내에 따라 기기를 잠자기 모드로 설정합니다.
  2. 테스트 기기의 앱에서 FCM 등록 토큰에 액세스합니다. 토큰에 액세스하는 방법에 관한 자세한 내용은 백그라운드 앱에 테스트 메시지 보내기를 참고하세요.
  3. FCM 토큰을 가져오면 FCM 알림 전송 코드 또는 우선순위가 높은 알림과 일치하는 구성 파라미터가 있는 cURL 명령어%3B%0A%7D)-,cURL,-curl%20%2DX)를 사용하여 우선순위가 높은 알림을 테스트 기기로 전송합니다.

Android에서 우선순위가 높은 FCM 우선순위 해제

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에서 작업을 예약할 수 있습니다.