잔여 데이터가 없는 사용자를 위해 기기 동작 맞춤설정

잔여 데이터가 없는 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;

참고: 이동통신사에서 자체 독립형 앱을 구현한다면 이 섹션에서 언급하지 않은 신호의 지원을 구현할 수 있습니다. 자체 작업을 정의하고 구성할 수도 있습니다.

기본 신호 작업 매핑

다음 프로세스에 따라 기본 작업을 구성합니다.

  1. 지원되는 신호의 키를 정의합니다.

    작업 매핑의 기본 신호는 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";
  2. 기본 작업을 신호 키에 연결합니다.

    기본 작업 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 테스트가 없습니다.

다음과 같은 수동 유효성 검사 테스트를 사용하여 기능을 확인합니다.

  1. 통신사 기기의 잔여 데이터 없음 신호 알림을 확인합니다.
  2. 잔여 데이터가 없고 Wi-Fi가 꺼져있는 동안 트래픽 리디렉션이 제한되는지 확인합니다.
  3. 잔여 데이터가 없는 상태에서 네트워크 트래픽이 감소하고 알림 UI가 표시되는지 확인합니다.
  4. 잔여 데이터가 없는 상태에서 음성 통화/VoLTE 기능을 확인합니다.
  5. 잔여 데이터가 없는 상태에서 영상 통화가 차단되는지 확인합니다.
  6. Wi-Fi가 켜져 있으면 사용자가 웹 탐색을 계속할 수 있는지, 잔여 데이터가 없는 상태에서 탐색 트래픽으로 네트워크 트래픽이 켜지지 않는지 확인합니다.
  7. 잔여 데이터가 없는 상태에서 Wi-Fi, WFC 및 블루투스 기능을 확인합니다.
  8. Wi-Fi를 끕니다. 잔여 데이터 없음 알림 UI를 확인하고 일반 탐색 트래픽이 통신사 등록 웹사이트로 리디렉션되지 않는지 확인합니다. 알림 UI의 링크를 클릭하면 브라우저가 통신사 등록 웹사이트로 이동하는지 확인합니다.
  9. 비행기 모드로 전환하면 트래픽 제한 상태가 재설정되지 않는지 확인합니다.
  10. 서비스 내 SIM을 교체하면 네트워크 트래픽 상태가 재설정되는지 확인합니다.
  11. 잔여 데이터가 없는 SIM을 다시 삽입하면 트래픽 리디렉션이 다시 시작되고 네트워크 트래픽 제한이 다시 발생하는지 확인합니다.
  12. 전화를 재부팅하면 리디렉션이 다시 활성화되고 트래픽 제한이 다시 발생하며 알림 UI가 다시 표시되는지 확인합니다.
  13. 'captiveportal' 알림을 탭합니다. 사용자가 크레딧을 추가할 수 있는 제한된 네트워크 연결이 설정되어 있는지 확인합니다.
  14. SIM 잔여 데이터 충전 또는 재활성화로 인해 셀룰러 네트워크 트래픽이 복구되고 통신사 연결 및 잔여 데이터 없음 알림이 사라지는지 확인합니다.
  15. 데이터 서비스 복구 후 새너티 테스트를 실행합니다.

기본 앱은 단위 테스트 예와 이를 실행할 스크립트를 제공합니다(tests/runtest.sh 참조). 맞춤설정된 버전이나 동작을 구현할 때 이러한 맞춤설정을 전용 단위 테스트에 반영해야 합니다.