실시간 업데이트 알림 만들기

시스템에서 실시간 업데이트 알림을 표시합니다. 승격된 알림은 알림 창 상단, 잠금 화면, 상태 표시줄의 칩 등 시스템 표시 경로에 더 눈에 띄게 표시됩니다.

그림 1. 실시간 업데이트 알림의 예

추천 알림 카드의 모양은 다음과 같습니다.

  • 기본적으로 펼쳐짐
  • 비축소형

실시간 업데이트로 간주되려면 알림이 다음 요구사항을 충족해야 합니다.

  • 표준/스타일 없음, BigTextStyle, CallStyle 또는 ProgressStyle이어야 합니다.
  • Android 매니페스트 android.permission.POST_PROMOTED_NOTIFICATIONS에서 다음과 같은 런타임 외 권한을 요청해야 합니다.
  • EXTRA_REQUEST_PROMOTED_ONGOING 또는 NotificationCompat.Builder#requestPromotedOngoing를 사용하여 프로모션을 요청해야 합니다.
  • ongoing여야 합니다 (FLAG_ONGOING_EVENT 설정).
  • contentTitle가 설정되어 있어야 합니다.
  • customContentView가 설정되어서는 안 됩니다 (RemoteViews 없음).
  • setGroupSummary를 사용하는 그룹의 요약이 되어서는 안 됩니다.
  • 알림 채널에 IMPORTANCE_MIN없어야 합니다.

프로모션 특성

다음 API는 시스템에서 알림을 표시할지 확인하는 데 도움이 됩니다.

  • Notification.FLAG_PROMOTED_ONGOING은 알림이 승격되었는지 나타냅니다.
  • Notification.hasPromotableCharacteristics()는 시스템에서 알림을 승격할 수 있는지 확인합니다. 이 메서드는 사용자가 설정에서 앱의 실시간 업데이트를 사용 중지했는지 고려하지 않습니다.
  • NotificationManager.canPostPromotedNotifications()는 앱이 프로모션 알림을 게시할 수 있는지 확인합니다(예: 사용자가 설정에서 프로모션 알림을 사용 설정했거나 사용 중지했는지 여부).
  • Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS는 앱이 사용자를 설정으로 보내 이 기능을 사용 설정하도록 허용하는 인텐트 작업입니다.

사용 기준

진행 중이며 사용자가 시작한 시간에 민감한 활동에는 실시간 업데이트를 사용하세요.

진행 중

실시간 업데이트는 명확한 시작과 종료가 있는 진행 중인 활동을 나타내야 합니다. 활동이 과거에 발생한 경우 실시간 업데이트를 사용하지 마세요. 대신 표준 알림을 사용하세요. 아직 시작되지 않은 이벤트에도 적용되지만, 시작하려는 이벤트는 실시간 업데이트를 사용할 수 있습니다.

실시간 업데이트는 진행 중인 활동을 나타냅니다. 실시간 업데이트를 사용하여 앱 기능에 대한 액세스 속도를 높이지 마세요. 이렇게 하려면 앱 위젯 또는 맞춤 빠른 설정 타일을 사용하세요.

  • 적절한 사용 사례: 활성 내비게이션, 진행 중인 전화 통화, 활성 차량 공유 추적, 활성 음식 배달 추적
  • 부적절한 용도: 광고, 프로모션, 채팅 메시지, 알림, 예정된 캘린더 일정, 앱 기능에 대한 빠른 액세스

사용자의 설정에 의해 사용 시작

대부분의 실시간 업데이트는 운동 시작, 운전 내비게이션 시작, 차량 공유 호출과 같이 사용자가 명시적으로 트리거하는 활동을 나타내야 합니다. 실시간 업데이트에는 사용자의 환경, 관심분야, 예정된 일정과 같은 대기 모드 정보는 표시하지 마세요. 다른 당사자가 트리거한 활동으로 실시간 업데이트를 생성하지 못하도록 합니다.

사용자가 향후 일정 시간 동안 활동을 시작하는 작업을 실행할 수도 있습니다. 예를 들어 사용자가 항공편 또는 연주회 티켓을 구매하거나, 토너먼트에 등록하거나, 시간에 민감한 이벤트에 참석할 예정임을 나타내는 경우입니다. 이 경우 예약된 이벤트가 시작될 때 실시간 업데이트를 자동으로 표시하는 것이 적절할 수 있습니다. 그러나 앱은 활동이 임박할 때만 표시되도록 트리거를 조정해야 합니다. 사용자가 스포츠 경기와 같은 백그라운드 이벤트 모니터링을 시작하겠다고 명시적으로 표시하면 해당 이벤트의 실시간 업데이트를 게시할 수 있습니다. 하지만 연결된 알림에 고정 해제 작업도 포함해야 합니다.

긴급한 내용

활동 중에 사용자의 주의가 필요한 경우에만 실시간 업데이트를 표시합니다. 실시간 업데이트의 주요 사용 사례는 모니터링입니다. 사용자가 실시간 업데이트를 한눈에 확인하여 활동의 변화하는 상태를 주시하는 데 큰 이점을 얻습니다.

실시간 업데이트는 실시간 업데이트와 일반 알림 간에 전환하는 활동에 적합합니다. 예를 들어 탑승권 알림은 사용자가 비행하는 몇 시간 전에 표시하는 것이 적절하지만, 공항이나 장소에 도착했거나 탑승이 시작된 경우와 같이 사용자가 긴급한 필요가 있을 때만 알림이 실시간 업데이트로 전환되어야 합니다. 반면 실시간 업데이트는 사용자가 패키지를 지속적으로 모니터링할 필요가 없으므로 패키지 추적에는 적합하지 않습니다.

상태 칩

상태 칩을 사용하면 알림이 표시되지 않을 때 사용자가 실시간 소식을 계속 확인할 수 있습니다. setShortCriticalText 또는 setWhen를 사용하여 진행률 중심 알림과 관련된 중요한 상태 정보를 전달합니다.

아이콘이 있는 상태 칩
그림 2. 불확정 상태에는 작은 아이콘 Notification.Builder#setSmallIcon이 표시됩니다.
시간 표시 상태 칩
그림 3. Notification.Builder#setShortCriticalText를 사용하여 절대 시간을 표시합니다.
정보가 포함된 상태 칩
그림 4. Notification.Builder#setShortCriticalText를 사용하여 중요한 정보를 전달합니다.

시간:

when 시간은 알림이 닫히거나 업데이트되지 않는 한 알림의 지속 시간에 대한 카운트다운을 트리거합니다.

  • when 시간이 현재 시간으로부터 2분 이상 지난 경우: 현재 시간이 오전 10시 5분이고 when 시간이 오전 10시 10분으로 설정된 경우 칩에 '5분'이라고 표시됩니다.
  • when 시간이 1분 이상 지난 경우 알림이 표시되지 않습니다.
  • 알림 창에 표시되는 알림에 시간이 표시되지 않도록 하려면 setShowWhen를 사용하여 FALSE을 사용하세요.

상태 칩 모양

상태 칩에는 항상 아이콘이 포함되며 원하는 경우 텍스트도 포함할 수 있습니다. 칩의 최대 너비는 96dp입니다. 다음 기준에 따라 텍스트를 표시합니다.

  • 7자 미만인 경우 전체 텍스트를 표시합니다.
  • 텍스트의 절반도 표시되지 않으면 아이콘만 표시합니다.
  • 텍스트의 절반 이상이 표시되는 경우 최대한 많은 텍스트를 표시합니다.

닫기

사용자는 알림 창에서 알림 표시 여부를 제어할 수 있습니다. 원치 않는 실시간 소식을 게시하면 사용자가 앱의 게시 권한을 취소할 수 있습니다.

사용자가 실시간 소식을 완전히 사용 중지하지 못하도록 하려면 사용자가 닫을 수 있는 업데이트를 게시하지 마세요. 사용자가 닫은 실시간 소식을 다시 게시하지 마세요. setDeleteIntent를 사용하여 닫힌 업데이트를 감지합니다.