통화 앱의 통화 스타일 알림 만들기

Android 12.0 (API 수준 31) 이상에서 시스템은 전화 알림을 구별할 CallStyle 알림 템플릿 알림을 받을 수 있습니다. 이 템플릿을 사용하여 새로 추가 또는 진행 중인 전화 알림 템플릿이 대형 알림을 지원합니다. 발신자 정보 및 필수 작업(예: 전화 받기 또는 전화 걸기)을 포함하는 도움이 될 수 있습니다

수신 전화와 진행 중인 전화는 우선순위가 높은 이벤트이므로 이러한 알림은 우선순위가 가장 높은 알림을 수신합니다. 또한 이러한 순위를 통해 우선순위가 지정된 통화를 다른 기기로 착신전환할 수 있습니다.

CallStyle 알림 템플릿에는 다음과 같은 필수 작업이 포함되어 있습니다.

  • 수신 전화의 받기 또는 거부
  • 진행 중인 통화의 전화를 끊습니다.
  • 통화 선택을 위해 받기 또는 전화 끊기

이 스타일의 작업은 버튼으로 표시되며, 시스템에서 자동으로 적절한 아이콘과 텍스트를 표시합니다. 버튼에 대한 수동 라벨 지정은 지원되지 않습니다. 알림 설계 원칙에 관한 자세한 내용은 알림:

라벨이 지정된 버튼이 있는 통화 스타일 알림
그림 1. 수신 전화와 진행 중인 통화를 위한 CallStyle 템플릿

필요한 작업은 hangupIntentanswerIntent 자세히 알아보기 이러한 각 항목은 유지관리합니다. 토큰은 경량 객체로 여러 앱과 프로세스 간에 전달될 수 있습니다. 시스템은 토큰의 수명을 관리하고 PendingIntent을(를) 만든 앱이 더 이상 사용되지 않아도 사용할 수 있음 있습니다 다른 앱에 PendingIntent 권한을 부여하면 거부 또는 응답과 같은 지정된 작업을 수행할 수 있는 권한입니다. 이 권한은 인텐트를 만든 앱이더라도 이(가) 현재 실행되고 있지 않습니다. 자세한 내용은 참조 문서를 확인하세요. (PendingIntent)

Android 14 (API 수준 34)부터 전화 알림을 구성할 수 있습니다. 닫을 수 없습니다. 이렇게 하려면 CallStyle 알림을 Notification.FLAG_ONGOING_EVENT~ Notification.Builder#setOngoing(true)입니다.

다음은 CallStyle와 함께 다양한 메서드를 사용하는 예입니다. 있습니다.

Kotlin

// Create a new call, setting the user as the caller.
val incomingCaller = Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build()

자바

// Create a new call with the user as the caller.
Person incomingCaller = new Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build();

수신 전화

forIncomingCall() 메서드를 사용하여 다음에 관한 통화 스타일 알림을 만듭니다. 수신 전화

Kotlin

// 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)

자바

// Create a call style notification for an incoming call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incomingCaller);

진행 중인 통화

forOngoingCall() 메서드를 사용하여 다음에 관한 통화 스타일 알림을 만듭니다. 진행 중인 통화입니다.

Kotlin

// 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)

자바

// Create a call style notification for an ongoing call.
Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forOngoingCall(caller, hangupIntent))
    .addPerson(second_caller);

통화 선택

forScreeningCall() 메서드를 사용하여 다음에 관한 통화 스타일 알림을 만듭니다. 통화 선택

Kotlin

// 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)

자바

// Create a call style notification for screening a call.
Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller);

더 많은 Android 버전과의 호환성 제공

API 버전 30 이하의 CallStyle 알림을 포그라운드 서비스로 이전하여 API에서 부여된 높은 순위를 할당 합니다. 또한 API 버전 30의 CallStyle 알림 또는 그 이전에 알림을 받도록 표시하면 됩니다. setColorized() 메서드를 사용하여 색상으로 지정됩니다.

CallStyle 알림과 함께 Telecom API를 사용합니다. 자세한 내용은 텔레콤 프레임워크 개요