Android 12.0 (API 수준 31) 이상에서 시스템은
CallStyle 알림 템플릿을 제공하여 통화 알림을
다른 유형의 알림과 구분합니다. 이 템플릿을 사용하여 수신 또는 진행 중인 통화 알림을 만듭니다. 이 템플릿은 발신자 정보와 통화 받기 또는 거부와 같은 필수 작업을 포함하는 대형 형식 알림을 지원합니다.
수신 전화와 진행 중인 통화는 우선순위가 높은 이벤트이므로 이러한 알림은 알림 창에서 최우선순위를 받습니다. 이 순위를 통해 시스템은 우선순위가 지정된 이러한 통화를 다른 기기로 전달할 수도 있습니다.
CallStyle 알림 템플릿에는 다음과 같은 필수 작업이 포함됩니다.
- 수신 전화의 경우 받기 또는 거부
- 진행 중인 통화의 경우 전화 끊기
- 통화 스크리닝의 경우 받기 또는 전화 끊기
이 스타일의 작업은 버튼으로 표시되며 시스템에서 적절한 아이콘과 텍스트를 자동으로 추가합니다. 버튼의 수동 라벨 지정은 지원되지 않습니다. 알림 디자인 원칙에 관한 자세한 내용은 알림을 참고하세요.
필수 작업은 다음 섹션의 hangupIntent 및 answerIntent와 같은 인텐트로 전달됩니다. 각각은 시스템에서 유지관리하는 토큰의 참조입니다. 토큰은 여러 앱과 프로세스 간에 전달될 수 있는 경량 객체입니다. 시스템은 토큰의 수명을 관리하고 토큰을 만든 앱이 더 이상 실행되지 않더라도 PendingIntent를 사용할 수 있도록 합니다. 다른 앱에 PendingIntent를 제공하면 거부 또는 받기와 같이 지정된 작업을 실행할 수 있는 권한을 부여하는 것입니다.
이 권한은 인텐트를 만든 앱이 실행되고 있지 않더라도 부여됩니다. 자세한 내용은 참조 문서를 참고하세요.
PendingIntent
Android 14 (API 수준 34)부터 통화 알림을 해제할 수 없도록 구성할 수 있습니다. 이렇게 하려면 CallStyle 알림을
Notification.FLAG_ONGOING_EVENT와 함께
Notification.Builder#setOngoing(true)를 통해 사용합니다.
다음은 CallStyle 알림과 함께 다양한 메서드를 사용하는 예입니다.
// Create a new call, setting the user as the caller.
val incomingCaller = Person.Builder()
.setName("Jane Doe")
.setImportant(true)
.build()
수신 전화
forIncomingCall() 메서드를 사용하여 수신 전화의 통화 스타일 알림을 만듭니다.
// Create a call style notification for an incoming call.
val builder = Notification.Builder(context, CHANNEL_ID)
.setContentIntent(contentIntent)
.setSmallIcon(smallIcon)
.setStyle(
Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
.addPerson(incomingCaller)
진행 중인 통화
forOngoingCall() 메서드를 사용하여 진행 중인 통화의 통화 스타일 알림을 만듭니다.
// Create a call style notification for an ongoing call.
val builder = Notification.Builder(context, CHANNEL_ID)
.setContentIntent(contentIntent)
.setSmallIcon(smallIcon)
.setStyle(
Notification.CallStyle.forOngoingCall(caller, hangupIntent))
.addPerson(second_caller)
통화 스크리닝
forScreeningCall() 메서드를 사용하여 통화 스크리닝을 위한 통화 스타일 알림을 만듭니다.
// Create a call style notification for screening a call.
val builder = Notification.Builder(context, CHANNEL_ID)
.setContentIntent(contentIntent)
.setSmallIcon(smallIcon)
.setStyle(
Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
.addPerson(second_caller)
더 많은 Android 버전에 호환성 제공
API 버전 30 이하의 CallStyle 알림을 포그라운드 서비스와 연결하여 API 수준 31 이상에서 부여되는 높은 순위를 할당합니다. 또한 API 버전 30
이하의 CallStyle 알림은 알림을
색상화된 것으로 표시하여 비슷한 순위를 달성할 수 있습니다. setColorized() 메서드를 사용합니다.
CallStyle 알림과 함께 Telecom API를 사용합니다. 자세한 내용은
Telecom 프레임워크 개요를 참고하세요.