데이터 통신 연결 네트워크 비용 제약 조건을 관리하는 방법(HTML)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

이 항목에서는 네트워크 연결 비용 또는 데이터 요금제 상태 변경 사항의 인식을 유지 관리하고 앱이 이 정보를 사용하여 Windows.Networking.Connectivity 네임스페이스의 클래스를 통해 로밍에 대한 추가 비용이 발생하거나 지정된 데이터 전송 제한을 초과하지 않도록 하는 모범 사례에 대해 자세히 설명합니다.

사전 요구 사항

다음 예는 JavaScript를 사용하며 네트워크 정보 샘플을 기반으로 합니다. JavaScript를 사용하여 Windows 런타임 앱을 만드는 방법에 대한 일반적인 내용은 JavaScript를 사용하여 첫 번째 Windows 런타임 앱 만들기를 참조하세요.

ConnectionProfile의 개념과 이 클래스가 나타내는 정보에 액세스하는 방법을 알고 있어야 합니다. 자세한 내용은 네트워크 연결 정보를 검색하는 방법을 참조하세요. 추가 코드 예제가 필요하면 네트워크 정보 샘플을 다운로드하세요.

데이터 통신 연결 네트워크란?

데이터 통신 연결 네트워크란 지정된 데이터 사용량 또는 로밍하는 동안 사용자에게 비용을 부과하는 네트워크를 말합니다. 대부분의 모바일 네트워크 공급자는 매월 사용자당 전송되는 데이터 양에 상한을 두고 데이터 상한을 초과하거나 로밍하는 중에 데이터를 전송할 경우 사용자에게 상당한 양의 요금을 부과했습니다. 모바일 광대역 기술이 점차 대중화되고 데이터 사용에 대한 수요가 증가하면서 이 문제의 영향이 더 커지고 데이터 요금제가 더 다양해질 수 있습니다. 따라서 Windows 런타임 앱은 이러한 네트워크 제한 사항을 인식하고 상황이 바뀔 때 동작을 적용해야 합니다.

Windows 8, Windows Server 2012 및 Windows Phone 8.1 이상에서는 무제한, 고정 또는 가변 비용 제한 사항을 허용하도록 데이터 통신 연결 네트워크를 분류합니다. NetworkCostType 열거는 이러한 값을 정의합니다. 사용자가 데이터 요금제에서 지정한 상한을 초과하거나 로밍하는 경우 대부분의 네트워크는 재정적으로 또는 액세스를 차단하거나 제한하는 방식으로 과도한 요금을 부과합니다.

대부분의 모바일 네트워크 사용자는 하루 종일 다양한 네트워크 사이를 이동하게 됩니다. 3G/4G 네트워크는 집이나 사무실 외부에 있는 동안의 네트워크 연결에 사용할 수 있습니다. 집이나 사무실에서는 하나 이상의 Wi-Fi 네트워크를 종종 사용할 수 있습니다. 마찬가지로 사용자가 집을 떠나면 동일한 Wi-Fi 네트워크를 사용할 수 없게 됩니다. 또한 네트워크를 사용할 수 없는 경우도 있습니다. Wi-Fi 및 모바일 광대역 네트워크가 확산될 경우 이러한 네트워크 변경 시나리오는 더 일반적으로 발생할 수 있습니다.

영향 범위

데이터 통신 연결 네트워크 대역폭을 잘못 사용하면 앱 및 조직의 신뢰도에 부정적인 영향을 줄 수 있습니다. 일반적으로 모든 Windows 런타임 앱(특히 대량의 데이터를 전송하는 앱)은 아래의 지침을 따라야 합니다.

일반 지침

연결 변경 이벤트를 등록하여 앱에서 연결 변경(이 경우 요금 또는 데이터 요금제 변경)을 인식하도록 할 수 있습니다. 변경 알림을 받으면 앱 동작 적용을 결정하기 전에 현재 정보에 대해 표시된 ConnectionProfile에 액세스할 수 있습니다. 이 프로세스에 대한 지침은 네트워크 연결 이벤트 및 가용성 변경을 관리하는 방법을 참조하세요.

데이터 통신 연결 네트워크 시나리오와 관련하여, 다음 ConnectionCost 속성을 사용하여 특정 연결에 대한 현재 데이터 요금제 설정을 식별하고 정보를 수집할 수 있습니다.

속성 설명

ApproachingDataLimit

연결이 통신 회사에서 정의한 데이터 요금제에 지정된 남은 데이터 사용량에 근접한지를 나타내는 값을 가져옵니다. 일반적으로 이러한 제한을 데이터 상한이라고 합니다.

NetworkCostType

연결의 현재 네트워크 비용을 나타내는 값을 가져옵니다.

  • Unrestricted: 이 네트워크 연결 사용은 무제한입니다. 사용 요금과 용량 제약이 없습니다.
  • Fixed이 네트워크 연결 사용은 통신 회사가 설정한 데이터 제한까지 무제한입니다.
  • Variable 이 네트워크 연결 사용은 바이트 단위로 요금이 부과됩니다.
  • Unknown이 네트워크 연결에 대한 요금 정보를 사용할 수 없습니다.

OverDataLimit

연결이 통신 회사에서 정의한 데이터 요금제에 지정된 남은 데이터 사용량을 초과했는지를 나타내는 값을 가져옵니다.

Roaming

홈 공급자 외부의 네트워크에 연결되어 있는지를 나타내는 값을 가져옵니다.

 

인터넷에서 대상에 연결하는 데 데이터 통신 연결 네트워크를 사용하는 앱에서는 GetInternetConnectionProfile을 호출하고 연결된 요금 속성에 액세스하여 직접 요금 정보를 얻을 수 있습니다. 이 정보를 사용하면 앱은 다음 지침에 따라 네트워크 리소스를 사용할 최상의 방법을 결정할 수 있습니다.

동작 앱 지침

일반

NetworkCostTypeUnrestricted 또는 Unknown이고 ConnectionCostRoaming이 아니면 앱은 Normal 동작을 구현해야 합니다.

Normal 시나리오에서 앱은 제한 사항을 구현하지 않습니다. 앱은 연결 요금을 Unlimited로 처리하고 사용 요금과 용량 제약에 따라 연결을 Unrestricted로 처리합니다.

예:

  • 전체 HD 동영상을 재생합니다.
  • 제한 사항이나 UI 프롬프트 없이 큰 파일을 다운로드합니다.
  • 미디어 플레이어 앱이 전체 HD 동영상을 재생합니다.
  • 앱이 제약이나 프롬프트 없이 큰 파일을 다운로드합니다.

제약 있음

NetworkCostTypeFixed 또는 Variable이고 ConnectionCostRoaming 또는 OverDataLimit이 아니면 앱은 Conservative 동작을 구현해야 합니다.

무난한 시나리오에서 앱은 네트워크 사용을 최적화하기 위한 제한 사항을 구현하여 데이터 통신 연결 네트워크를 통한 전송을 처리합니다.

예:

  • 동영상을 낮은 해상도로 재생합니다.
  • 중요하지 않은 다운로드를 연기합니다.
  • 네트워크를 통한 정보의 사전 가져오기를 방지합니다.
  • 메일 메시지를 검색할 때 헤더 전용 모드로 전환합니다.
  • 미디어 플레이어 앱이 낮은 해상도의 동영상을 재생합니다.
  • 앱이 중요하지 않은 다운로드를 연기합니다.

옵트인

ConnectionCostRoaming 또는 OverDataLimit인 경우 앱은 Opt-In 동작을 구현해야 합니다.

옵트인 시나리오에서 앱은 네트워크 액세스 요금이 요금제 요금보다 상당히 높은 경우를 처리합니다. 예를 들어 사용자가 로밍 중일 때 이동 통신 회사가 높은 데이터 사용 요금을 부과할 수 있습니다.

예:

  • 네트워크에 액세스하기 전에 사용자에게 메시지를 표시합니다.
  • 모든 백그라운드 데이터 네트워크 작업을 일시 중지합니다.
  • 앱이 네트워크에 액세스하라는 메시지를 사용자에게 표시합니다.
  • 앱이 모든 백그라운드 데이터 네트워크 작업을 일시 중지합니다.

 

이 코드 예제에서는 연결 비용을 확인하고 적절한 앱 동작을 추천합니다.

var CostGuidance = { Normal: 0, Conservative: 1, OptIn: 2 };
// GetCostGuidance returns an object with a Cost (with value of CostGuidance), 
// CostName (a string) and Reason, which says why the cost is what it is.

function GetCostGuidance() 
{
    var connectionCost = Windows.Networking.Connectivity.NetworkInformation.getInternetConnectionProfile().getConnectionCost();
    var networkCostConstants = Windows.Networking.Connectivity.NetworkCostType;
    var Retval = new Object();
    if (connectionCost.roaming || connectionCost.overDataLimit)
    {
        Retval.Cost = CostGuidance.OptIn;
        Retval.CostName = "OptIn";
        Retval.Reason = connectionCost.roaming
            ? "Connection is roaming; using the connection may result in additional charge."
            : "Connection has exceeded the usage cap limit.";
    }
    else if (connectionCost.networkCostType == networkCostConstants.fixed
        || connectionCost.networkCostType == networkCostConstants.variable)
    {
        Retval.Cost = CostGuidance.conservative;
        Retval.CostName = "Conservative";
        Retval.Reason = connectionCost.networkCostType == NetworkCostType.fixed
            ? "Connection has limited allowed usage."
            : "Connection is charged based on usage. ";
    }
    else
    {
        Retval.Cost = CostGuidance.Normal;
        Retval.CostName = "Normal";
        Retval.Reason = connectionCost.networkCostType == networkCostConstants.unknown
            ? "Connection is unknown"
            : "Connection cost is unrestricted";
    }

    return Retval;
}

Windows 스토어 앱과 Windows Phone 스토어 앱의 동작 차이점

일부 모바일 광대역 공급자는 모바일 광대역에 대한 프로비전된 프로필의 사용자 요금제에 대해 비용 정보를 설정하지 않습니다. 사용자는 Windows 및 Windows Phone에서 이 비용 정보를 입력할 책임이 있습니다.

비용 정보는 모바일 광대역 네트워크에 대해 다르게 보고됩니다. Windows 8.1에서 사용자가 모바일 광대역에 대한 비용 정보를 설정하지 않으면 NetworkCostTypeFixed 비용으로 보고됩니다. Windows Phone 8.1에서 모바일 광대역(셀룰러 데이터)에 대한 비용 정보를 설정하지 않으면 Unknown으로 보고됩니다. 이러한 동작의 차이는 연결 비용을 확인하고 적절한 앱 동작을 추천하는 방법에 대한 위의 일반적인 지침에 영향을 줍니다. 위의 지침을 사용하여 Windows 8.1은 Conservative 동작을 추천하고 Windows Phone 8.1은 Normal 동작을 추천합니다. 두 플랫폼 모두 Conservative 동작을 추천해야 합니다. 따라서 Windows Phone의 모바일 광대역 프로필에 적절한 동작에 대한 일반 지침을 수정해야 합니다.

최대 전송 크기 처리

데이터 통신 연결 네트워크를 통해 큰 파일을 전송하면 사용자에게 예기치 않은 상당히 많은 요금이 부과될 수 있습니다. 데이터 통신 연결 네트워크로 연결되어 있을 때 파일을 동기화, 업로드 또는 다운로드하는 앱은 통신 회사에서 지정한 최대 전송 크기보다 파일 크기가 작은 경우에만 사용자 허가 없이 그렇게 할 수 있습니다.

앱은 많은 양의 데이터를 전송하려면 사용자 허가를 얻거나 무제한 네트워크에 액세스할 때까지 기다려야 합니다. 또는 응용 프로그램에서 사용자가 이후 사용자 허가 메시지를 건너뛰도록 할 수 있습니다.

다음 예제 코드에서는 연결의 최대 전송 크기를 검색하는 방법을 보여 줍니다.

var dataPlanStatus = InternetProfile.getDataPlanStatus();

if (dataPlanStatus.maxTransferSizeInMegabytes !== null) {
  
    mySample.displayStatus("Maximum Transfer Size in Megabytes: " + dataPlanStatus.maxTransferSizeInMegabytes);
}
else{

    mySample.displayError("Maximum Transfer Size in Megabytes: " + "Not Defined");
}

요약

이 항목에서는 데이터 통신 연결 네트워크 시나리오와 최종 사용자 대신 연결된 앱에서 추가 비용이 발생하지 않도록 하는 최적의 방법을 살펴보았습니다.

여기서는 데이터 통신 연결 네트워크 시나리오를 다루지만 NetworkStatusChanged 이벤트는 또한 연결 가용성의 변경 사항을 나타낼 수도 있습니다. 이러한 시나리오를 가장 적절하게 응용하는 방법에 대한 자세한 내용은 네트워크 연결 이벤트 및 가용성 변경을 관리하는 방법을 참조하세요.

관련 항목

기타

JavaScript를 사용하여 첫 Windows 런타임 앱 만들기

네트워크 앱에서 예외를 처리하는 방법

네트워크 연결 이벤트 및 가용성 변경을 관리하는 방법

네트워크 어댑터 및 위치 정보를 검색하는 방법

네트워크 연결 정보를 검색하는 방법

네트워크 연결 사용 데이터를 검색하는 방법

참조

ConnectionCost

ConnectionProfile

DataPlanStatus

NetworkCostType

NetworkInformation

Windows.Networking.Connectivity

샘플

네트워크 정보 샘플

네트워크 상태 배경 샘플