잔여 데이터가 없는 Android 기기를 통해 네트워크 트래픽을 통과할 수 있으므로 이동통신사와 통신사가 완화 프로토콜을 구현해야 합니다. Android에서 구현하는 일반적인 솔루션으로 이동통신사와 통신사는 기기의 잔여 데이터가 부족한 시점을 표시할 수 있습니다.
Android 플랫폼은 종속 포털 감지 신호에 기반하여 트래픽 완화를 위한 기본 동작을 기본 이동통신사 앱에 제공합니다. 이동통신사와 OEM은 낮은 비용과 높은 유연성으로 이 동작을 맞춤설정할 수도 있습니다.
예 및 소스
기본 이동통신사 앱은 platform/frameworks/base/packages/CarrierDefaultApp/.
에 있습니다.
구현
기본 이동통신사 앱은 구성되지 않은 이동통신사에 더 나은 환경을 제공하도록 처음부터 구성되어 있습니다. 이동통신사는 이 기본 동작을 사용할 수 있습니다. 이동통신사 구성 XML 파일에 신호 작업 매핑을 추가하여 기본 동작을 재정의할 수도 있습니다. 기본 앱을 사용하지 않고 자체 독립형 이동통신사 앱에서 UICC 권한을 대신 사용할 수 있습니다.
구현 소개
신호
Android 프레임워크는 다음 매개변수화된 신호의 작업 구성을 지원합니다.
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
이러한 신호는 frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
에 있습니다.
지원되는 작업
기본 이동통신사 앱은 지원되는 신호에 매핑할 수 있는 지원되는 작업 세트를 정의합니다. 이러한 작업 세트는 CarrierActionUtils.java
에 정의되어 있습니다.
public static final int CARRIER_ACTION_ENABLE_METERED_APNS = 0; public static final int CARRIER_ACTION_DISABLE_METERED_APNS = 1; public static final int CARRIER_ACTION_DISABLE_RADIO = 2; public static final int CARRIER_ACTION_ENABLE_RADIO = 3; public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION = 4; public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5; public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS = 6;
참고: 이동통신사에서 자체 독립형 앱을 구현한다면 이 섹션에서 언급하지 않은 신호의 지원을 구현할 수 있습니다. 자체 작업을 정의하고 구성할 수도 있습니다.
기본 신호 작업 매핑
다음 프로세스에 따라 기본 작업을 구성합니다.
- 지원되는 신호의 키를 정의합니다.
작업 매핑의 기본 신호는
CarrierConfigManager.java
에 정의되어 있습니다. 지원되는 각 신호에는 키가 있습니다.public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array"; public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
- 기본 작업을 신호 키에 연결합니다.
기본 작업 ID는 신호 키에 연결됩니다.
sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY, new String[]{ "1, 4" //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION // 4: CARRIER_ACTION_DISABLE_METERED_APNS });
텔레포니 프레임워크는 이러한 작업을 상응하는 신호에 매핑합니다.
기본 작업 재정의
작업 ID를 신호 키(CarrierConfigManager.java
에서 정의됨)에 연결하여 이동통신사 구성 XML 파일에서 지원되는 신호의 맞춤 작업을 정의할 수 있습니다. 예를 들어 다음 매핑은 데이터 전송량 제한이 있는 APN을 사용 중지하고 리디렉션에 관한 포털 알림을 보여줍니다.
<string-array name="carrier_default_actions_on_redirection_string_array" num="2"> <item value="1" /> <item value="4" /> </string-array>
텔레포니 프레임워크는 이러한 구성을 로드하고 기본 작업을 재정의합니다.
유효성 검사
이 기능에는 CTS, CTS 인증기 또는 GTS 테스트가 없습니다.
다음과 같은 수동 유효성 검사 테스트를 사용하여 기능을 확인합니다.
- 통신사 기기의 잔여 데이터 없음 신호 알림을 확인합니다.
- 잔여 데이터가 없고 Wi-Fi가 꺼져있는 동안 트래픽 리디렉션이 제한되는지 확인합니다.
- 잔여 데이터가 없는 상태에서 네트워크 트래픽이 감소하고 알림 UI가 표시되는지 확인합니다.
- 잔여 데이터가 없는 상태에서 음성 통화/VoLTE 기능을 확인합니다.
- 잔여 데이터가 없는 상태에서 영상 통화가 차단되는지 확인합니다.
- Wi-Fi가 켜져 있으면 사용자가 웹 탐색을 계속할 수 있는지, 잔여 데이터가 없는 상태에서 탐색 트래픽으로 네트워크 트래픽이 켜지지 않는지 확인합니다.
- 잔여 데이터가 없는 상태에서 Wi-Fi, WFC 및 블루투스 기능을 확인합니다.
- Wi-Fi를 끕니다. 잔여 데이터 없음 알림 UI를 확인하고 일반 탐색 트래픽이 통신사 등록 웹사이트로 리디렉션되지 않는지 확인합니다. 알림 UI의 링크를 클릭하면 브라우저가 통신사 등록 웹사이트로 이동하는지 확인합니다.
- 비행기 모드로 전환하면 트래픽 제한 상태가 재설정되지 않는지 확인합니다.
- 서비스 내 SIM을 교체하면 네트워크 트래픽 상태가 재설정되는지 확인합니다.
- 잔여 데이터가 없는 SIM을 다시 삽입하면 트래픽 리디렉션이 다시 시작되고 네트워크 트래픽 제한이 다시 발생하는지 확인합니다.
- 전화를 재부팅하면 리디렉션이 다시 활성화되고 트래픽 제한이 다시 발생하며 알림 UI가 다시 표시되는지 확인합니다.
- 'captiveportal' 알림을 탭합니다. 사용자가 크레딧을 추가할 수 있는 제한된 네트워크 연결이 설정되어 있는지 확인합니다.
- SIM 잔여 데이터 충전 또는 재활성화로 인해 셀룰러 네트워크 트래픽이 복구되고 통신사 연결 및 잔여 데이터 없음 알림이 사라지는지 확인합니다.
- 데이터 서비스 복구 후 새너티 테스트를 실행합니다.
기본 앱은 단위 테스트 예와 이를 실행할 스크립트를 제공합니다(tests/runtest.sh
참조). 맞춤설정된 버전이나 동작을 구현할 때 이러한 맞춤설정을 전용 단위 테스트에 반영해야 합니다.