Android 6.0(Marshmallow)에는 다이얼러에 통합된 VVM(시각적 음성사서함)의 지원을 구현했습니다. 이 구현을 사용하면 호환되는 이동통신사 VVM 서비스를 최소한의 구성으로 다이얼러에 연결할 수 있습니다. 시각적 음성사서함은 사용자가 전화를 걸지 않고도 쉽게 음성메시지를 확인할 수 있게 해줍니다. 사용자는 받은편지함 형태의 인터페이스에서 메시지 목록을 보고 순서에 관계없이 수신한 다음 원하는 대로 삭제할 수 있습니다.
Android 7.0에서는 시각적 음성사서함에 다음과 같은 구성 매개변수가 추가되었습니다.
- 음성메시지 미리 가져오기가
KEY_VVM_PREFETCH_BOOLEAN
에 의해 제어됩니다. KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
으로 모바일 데이터 연결이 필요한지 제어- 음성메시지 스크립트 가져오기
- 음성메시지 사용량 가져오기
이 문서에서는 제공된 내용의 개요, 이동통신사가 이와 통합할 수 있는 방법 및 구현의 세부정보를 설명합니다.
시각적 음성사서함(VVM) 클라이언트
Android 6.0 이상에는 OMTP VVM 클라이언트가 포함됩니다. 이 클라이언트는 올바른 구성으로 제공될 경우 이동통신사 VVM 서버에 연결되어 Android 오픈소스 프로젝트(AOSP) 다이얼러 내의 시각적 음성사서함 메시지를 채웁니다. VVM 클라이언트는 다음을 수행합니다.
- 서비스 상태를 활성화/비활성화/쿼리하는 데 사용되는 SMS 메시지와 구독자의 편지함에서 이벤트의 기기를 알리는 데 사용되는 SMS 메시지를 처리합니다.
- 편지함을 IMAP 서버와 동기화합니다.
- 사용자가 수신하기로 선택하면 음성메시지를 다운로드합니다.
- 음성메시지 스크립트를 가져옵니다.
- 음성메시지 사용량에 대한 세부정보를 가져옵니다(편지함의 총 크기 및 사용량).
- 콜백, 읽지 않은 메시지 보기, 메시지 삭제 등의 사용자 기능을 위해 다이얼러와 통합됩니다.
VVM 클라이언트와 통합
구현
이동통신사는 OMTP VVM 사양을 구현하는 시각적 음성사서함 서버를 제공해야 합니다. AOSP VVM 클라이언트의 최신 구현은 핵심 기능(음성메시지 읽기/삭제하기, 다운로드/동기화/수신)을 지원하지만, 추가적인 TUI 기능(비밀번호 변경, 음성사서함 인사말, 언어)은 구현되지 않습니다. 현재로서는 OMTP 버전 1.1만 지원하며 IMAP 인증을 위한 암호화는 사용하지 않습니다.
스크립트를 지원하려면 이동통신사가 OMTP 1.3 사양, 항목 2.1.3에 명시된 스크립트 첨부 형식(MIME 유형 일반/텍스트)을 지원해야 합니다.
참고: 서버에서 발생하여 기기로 전송된 SMS 메시지(예: STATUS 또는 SYNC)는 데이터 SMS 메시지여야 합니다.
구성
이동통신사가 VVM 서비스와 통합하려면 통신사가 OMTP 클라이언트에서 사용할 수 있는 구성 세부정보를 플랫폼에 제공해야 합니다. 이러한 매개변수는 다음과 같습니다.
- SMS의 도착지 번호 및 포트 번호
- 패키지가 설치된 경우 플랫폼 구현을 사용 중지할 수 있도록 이동통신사에서 제공한 시각적 음성사서함 앱의 패키지 이름(제공된 경우)
이러한 값은 이동통신사 구성 API를 통해 제공됩니다. Android 6.0에서 출시된 이 기능을 사용하면 애플리케이션이 텔레포니 관련 구성을 필요로 하는 다양한 플랫폼 구성요소에 동적으로 제공할 수 있습니다. 특히 다음 키에는 정의된 값이 있어야 합니다.
KEY_VVM_DESTINATION_NUMBER_STRING
KEY_VVM_PORT_NUMBER_INT
KEY_VVM_TYPE_STRING
KEY_CARRIER_VVM_PACKAGE_NAME_STRING
KEY_VVM_PREFETCH_BOOLEAN
KEY_VVM_CELLULAR_DATA_REQUIRED_BOOLEAN
자세한 내용은 이동통신사 구성 도움말을 참조하세요.
구현
OMTP VVM 클라이언트는 packages/services/Telephony
내에 특히, src/com/android/phone/vvm/
내에 구현됩니다.
설정
- VVM 클라이언트는
TelephonyIntents#ACTION_SIM_STATE_CHANGED
또는CarrierConfigManager#ACTION_CARRIER_CONFIG_CHANGED
를 수신 대기합니다. - 올바른 이동통신사 구성 값(
TelephonyManager.VVM_TYPE_OMTP
또는TelephonyManager.VVM_TYPE_CVVM
로 설정된KEY_VVM_TYPE_STRING
)이 있는 SIM이 추가되면 VVM 클라이언트는 ACTIVATE SMS를KEY_VVM_DESTINATION_NUMBER_STRING
에 정의된 값에 전송합니다. - 서버는 시각적 음성사서함 서비스를 활성화하고 STATUS sms를 통해 OMTP 사용자 인증 정보를 전송합니다. VVM 클라이언트는 STATUS sms를 수신하면 음성메시지 소스를 등록하고 기기에 음성메시지 탭을 표시합니다.
- 아래에 설명한 것처럼 OMTP 사용자 인증 정보가 로컬에 저장되고 기기가 전체 동기화를 시작합니다.
동기화 중
VVM 클라이언트가 이동통신사 서버와 동기화하거나 반대로 동기화할 수 있는 다양한 방법이 있습니다.
- 전체 동기화는 최초 다운로드 시에 발생합니다. VVM 클라이언트는 사용 가능한 경우 날짜 및 시간, 발신 번호, 길이, 음성메시지 스크립트와 같은 음성메시지 메타데이터를 가져오며
KEY_VVM_PREFETCH_BOOLEAN
이 참인 경우 오디오 데이터를 가져옵니다. 전체 동기화는 다음에 의해 트리거될 수 있습니다.- 새 SIM 삽입
- 기기 재부팅
- 서비스 재방문
VoicemailContract.ACTION_SYNC_VOICEMAIL
브로드캐스트 수신
- 업로드 동기화는 사용자가 음성메시지와 상호작용하여 읽거나 삭제할 때 발생합니다. 업로드를 동기화하면 서버는 기기의 데이터와 일치하도록 데이터를 변경합니다. 예를 들어 사용자가 음성메시지를 읽으면 메시지가 서버에서 읽음으로 표시되며, 사용자가 음성메시지를 삭제하면 메시지가 서버에서 삭제됩니다.
- 다운로드 동기화는 VVM 클라이언트가 이동통신사의 'MBU'(편지함 업데이트) SYNC sms를 수신하면 발생합니다. SYNC 메시지에는 새 메시지의 메타데이터가 포함되므로 음성메시지 콘텐츠 제공자에 이를 저장할 수 있습니다.
참고: 음성사서함 사용량 값은 매번 동기화가 진행되는 동안 회수됩니다.
음성메시지 다운로드
사용자가 재생을 눌러 음성메시지를 들으면 상응하는 오디오 파일이 다운로드됩니다. 사용자가 음성메시지를 듣기로 하면 다이얼러에서 VoicemailContract.ACTION_FETCH_VOICEMAIL
을 브로드캐스트하여 음성사서함 클라이언트가 이를 수신하고 콘텐츠 다운로드를 시작하며 플랫폼 음성사서함 콘텐츠 제공자에서 기록을 업데이트할 수 있습니다.
VVM 사용 중지
VVM 서비스는 사용자 상호작용, 유효한 SIM 제거 또는 이동통신사 VVM 앱으로 교체에 의해 사용 중지되거나 비활성화될 수 있습니다. 사용 중지됨은 로컬 기기에서 더 이상 시각적 음성사서함을 표시하지 않는다는 의미입니다. 비활성화됨은 서비스가 구독자에게 꺼져 있다는 의미입니다. 사용자 상호작용으로 서비스가 비활성화될 수 있고, SIM 제거 시 더 이상 SIM이 없으므로 서비스가 일시적으로 사용 중지되며, 이동통신사 VVM으로 교체하면 AOSP VVM 클라이언트가 사용 중지됩니다.
사용자 상호작용
사용자는 수동으로 시각적 음성사서함을 사용 설정하거나 사용 중지할 수 있습니다. 사용자가 시각적 음성사서함을 사용 중지하면 서비스도 비활성화됩니다. 시각적 음성사서함을 사용 중지하면 DEACTIVATE sms가 전송되고 음성메시지 소스가 로컬에서 등록 해제되며 음성메시지 탭이 사라집니다. 시각적 음성사서함을 다시 사용 설정하면 서비스도 다시 활성화됩니다.
SIM 제거
기기의 SIM 상태(ACTION_SIM_STATE_CHANGED
) 또는 이동통신사 구성 값(ACTION_CARRIER_CONFIG_CHANGED
)이 변경되고 SIM의 유효한 구성이 더 이상 존재하지 않으면 음성메시지 소스가 로컬에서 등록 해제되고 음성메시지 탭이 사라집니다. SIM이 교체되면 VVM이 다시 사용 설정됩니다.
이동통신사 VVM에 의해 교체됨
이동통신사의 시각적 음성사서함 앱은 기기에 설치된 경우 AOSP VVM 클라이언트를 사용 중지할 수 있습니다. 이렇게 하려면 KEY_CARRIER_VVM_PACKAGE_NAME_STRING
매개변수와 이름이 일치하는 패키지가 설치되었는지 확인해야 합니다.
VVM 클라이언트는 계속해서 사용자 상호작용을 통해 사용 설정할 수 있습니다.
테스트
앱이 음성메시지를 플랫폼에 삽입/쿼리/삭제할 수 있도록 해주는 VoicemailProvider API와 관련된 기존(Android 4.0 이후) CTS 테스트 모음이 있습니다. VVM은 이 동일한 API로 음성메시지를 추가/삭제하므로 모든 다이얼러 앱이 이를 UI에 표시할 수 있습니다.
구성 애플리케이션이 OMTP 구성을 올바르게 전달하는지 테스트하려면 다음을 사용하여 코드를 테스트하세요.
- 유효한 인증서 서명이 포함된 SIM
- 수정되지 않은 AOSP 전화 프레임워크 버전이 포함된 Android 6.0을 실행하는 기기