통신사 알림 이벤트 기술 세부 정보

이 항목에서는 통신사 알림 이벤트의 기술 세부 정보를 설명합니다.

이벤트 페이로드

MobileOperatorNotification 이벤트 페이로드에는 다음 필드가 포함됩니다.

필드 Description
MessageType 이벤트를 트리거한 메시지의 열거형입니다.
인터페이스 이벤트와 연결된 실제 인터페이스에 해당하는 GUID입니다.
EncodingType MessageType이 SMS/USSD인 경우 메시지의 인코딩 메서드입니다.
MessageDataSize MessageType이 SMS/USSD인 경우 메시지의 크기(바이트)입니다.
Message MessageType이 SMS/USSD인 경우 수신되는 원시 메시지입니다.

MobileOperatorNotification 이벤트는 이벤트 페이로드에서 MessageType 필드를 사용하여 이를 구분하여 통신사 알림 시나리오에 설명된 각 시나리오를 사용하도록 설정합니다. MessageTypes는 다음과 같이 열거됩니다.

열거형 Type
0 GSM SMS
1 CDMA SMS
2 Ussd
3 DataPlanThresholdReached
4 DataPlanReset
5 DataPlanDeleted
6 ProfileConnected
7 ProfileDisconnected
8 RegisteredRoaming
9 RegisteredHome
10 TetheringEntitlementCheck

MobileOperatorNotification 이벤트와 연결된 작업 항목은 MessageType을 효과적으로 구분하는 논리로 시작하고 각 시나리오에 적합한 코드를 실행해야 합니다.

GSM/CDMA SMS 및 USSD

SMS 및 USSD를 포함한 들어오는 운영자 메시지는 적절한 MessageTypes와 함께 MobileOperatorNotification 이벤트를 트리거합니다. 이러한 유형에는 EncodingType, MessageDataSizeMessage가 고유합니다.

DataPlanThresholdReached

기본적으로 이 메시지 유형은 사용하지 않도록 설정됩니다. 여기에 표시된 것처럼 프로비저닝 메타데이터를 사용하여 DataUsageInMobileOperatorNotificationEnabled 필드를 지정하여 사용하도록 설정할 수 있습니다.

<?xml version="1.0"?>
<CarrierProvisioning xmlns="http://www.microsoft.com/networking/CarrierControl/v1">
  <Global>
    <CarrierId>{2c85b76b-f859-47c4-8122-721fe8b6c25f}</CarrierId>
    <SubscriberId>012345678901234</SubscriberId>
  </Global>
  <MBNProfiles>
    <DefaultProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WWAN/v1">
      <Name>Contoso</Name>
      <AssociatedPlan>SamplePlan</AssociatedPlan>
      <Context>
        <AccessString>Contoso.com</AccessString>
        <UserLogonCred>
          <UserName>User</UserName>
          <Password>[PLACEHOLDER]</Password>
        </UserLogonCred>
      </Context>
    </DefaultProfile>
  </MBNProfiles>
  <Plans>
    <Plan xmlns="http://www.microsoft.com/networking/CarrierControl/Plans/v1" Name="SamplePlan">
      <Description PlanType="Fixed">
        <DataLimitInMegabytes>500</DataLimitInMegabytes>
        <DataUsageInMobileOperatorNotificationEnabled>true</DataUsageInMobileOperatorNotificationEnabled>
      </Description>
    </Plan>
  </Plans>
</CarrierProvisioning>

계정 프로비저닝 메타데이터에 대한 자세한 내용은 계정 프로비저닝을 참조하세요.

이 이벤트는 로컬 데이터 카운터가 모바일 광대역 인터페이스의 사용량(전송 및 수신된 바이트)이 다음 경우를 제외하고 마지막 발생 이후 5% 변경된 것으로 추정할 때 이 MessageType 을 사용하여 생성됩니다.

  1. 홈 네트워크(비 로밍)에 연결된 경우 데이터 계획 제한이 지정되지 않은 경우 이 이벤트는 로컬 데이터 사용량의 100MB마다 트리거됩니다.

  2. 로밍 네트워크에 연결된 경우 데이터 계획 제한이 적용되지 않으며 이 이벤트는 로컬 데이터 사용량의 5MB마다 트리거됩니다.

Windows 8 로컬 데이터 카운터는 1분마다 업데이트됩니다. 이 이벤트는 설명된 모든 시나리오에서 분당 한 번 생성됩니다. Windows 8.1 5% 임계값에 도달하면 이벤트가 실시간으로 전달됩니다.

참고

이 정보는 좋은 첫 번째 순서 가이드이지만 Windows는 청구되지 않은 트래픽 또는 동일한 데이터 제한(예: 가족 계획 또는 SIM 교환)을 공유하는 다른 디바이스에서 사용할 수 없습니다. 통신사 앱은 운영자의 자체 청구 시스템과 마지막 동기화 이후의 대략적 사용량에 대해서만 로컬 데이터 카운터를 사용해야 합니다. 이미 처리된 데이터 사용량의 경우 청구 시스템을 신뢰할 수 있는 것으로 간주해야 합니다.

DataPlanReset

계획 재설정 날짜에 DUSM(데이터 사용량 및 구독 관리자)은 사용자의 현재 로컬 데이터 사용량을 0으로 다시 설정합니다.

DataPlanDeleted

만료 날짜가 고정된 선불 데이터 요금제의 경우 DUSM은 만료 날짜에 계정과 연결된 연결 프로필을 삭제하고 MobileOperatorNotification 이벤트는 이 MessageType을 사용하여 트리거됩니다. 연결 프로필이 삭제되면 Windows 연결 관리자 더 이상 연결 프로필에서 설명하는 네트워크에 자동으로 연결하려고 시도하지 않습니다.

ProfileConnected 및 ProfileDisconnected

MobileOperatorNotification 이벤트는 Windows 연결 관리자 운영자 환경 메타데이터에서 제공하는 네트워크 프로필에 연결할 때 이러한 MessageType을 사용하여 생성됩니다. 이 이벤트는 절전/다시 시작 다음에 오는 초기 연결을 포함하여 모든 연결 및 연결 끊기에서 트리거됩니다. 앱 및 서비스 메타데이터를 다운로드하고 설치할 때 디바이스가 이미 연결된 경우에도 트리거됩니다.

ProfileConnected MessageType은 모바일 광대역 인터페이스에 대한 L2 연결에서 트리거됩니다.

참고

이 트리거는 네트워크 식별이 완료되기 전에 발생합니다. NetworkStatusChanged 이벤트(NetworkInformation API의 일부)는 네트워크 ID가 네트워크의 연결 수준을 결정할 때 생성됩니다. 네트워크 식별에 대한 자세한 내용은 빠른 시작: 네트워크 연결 정보 검색NetworkInformation 클래스를 참조하세요.

RegisteredRoaming 및 RegisteredHome

MobileOperatorNotification 이벤트는 Windows 연결 관리자 로밍 네트워크에 등록할 때 이러한 MessageType을 사용하여 생성됩니다. 이 이벤트는 절전/다시 시작 후 초기 등록을 포함하여 모든 등록에서 트리거됩니다. 또한 앱 및 서비스 메타데이터를 다운로드하고 설치할 때 디바이스가 네트워크에 이미 등록된 경우에도 트리거됩니다.

앱은 로밍 네트워크에 등록할 때 한 번만 사용자에게 알리고 홈 네트워크로 돌아갈 때 한 번만 알려야 합니다. 이 이벤트는 모든 등록 시 트리거되므로 앱은 앱의 세션 데이터에서 이전에 등록된 상태를 추적해야 합니다.

TetheringEntitlementCheck

MobileOperatorNotification 이벤트는 사용자가 인터넷 공유를 켭니다. 이 이벤트는 통신사가 서비스 메타데이터 스키마의 AllowTethering 요소를 EntitlementCheckRequired로 설정한 한 사용자가 인터넷 공유를 사용하려고 할 때마다 트리거됩니다. 서비스 메타데이터 스키마에 대한 자세한 내용은 서비스 메타데이터 패키지 스키마 참조를 참조하세요.

앱은 통신사 네트워크에서 지원하는 적절한 권한 검사 메커니즘을 실행하고 Windows.NetworkOperators 네임스페이스에 있는 NetworkOperatorNotificationEventDetails 클래스의 AuthorizeTethering 메서드를 사용하여 결과를 시스템에 보내야 합니다. 앱에 권한 검사 실행할 수 있는 기능이 없는 경우 통신사는 이벤트가 생성되지 않도록 Service Metadata AllowTethering 요소를 Always 또는 Never로 변경해야 합니다.

메타데이터를 사용하여 MobileOperatorNotification 이벤트에 등록

일반적으로 시스템 이벤트 브로커에 작업 항목을 등록하려면 먼저 사용자가 앱을 한 번 이상 실행해야 합니다. 그러나 주요 모바일 광대역 시나리오를 완료하려면 MobileOperatorNotification 이벤트가 필요하므로 이 이벤트는 서비스 메타데이터를 사용하여 모바일 광대역 앱과 연결됩니다. 서비스 메타데이터에서 DeviceCompanionApplications 요소를 구성합니다.

<DeviceCompanionApplications>
  <Package>
    <Identity Name="MyOperatorNotification" Publisher="MyCorporation " />
    <Applications>
      <Application Id="MyOperatorNotification" />
        <DeviceNotificationHandlers>
          <DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="backgroundtask.js" />
      </DeviceNotificationHandlers>
    </Applications>
  </Package>
</DeviceCompanionApplications>

EventID 특성은 디바이스에서 예상되는 이벤트의 종류를 시스템에 알려줍니다. EventAsset 특성 값은 백그라운드 작업을 구현하는 진입점을 가리킵니다. 이렇게 하면 특정 이벤트가 발생했을 때 실행할 태스크가 시스템에 알려 줍니다.

이 예제를 사용하여 시스템은 해당 디바이스와 관련된 이벤트를 만들고 등록합니다. 또한 이 이벤트에 대한 모바일 광대역 앱도 등록합니다. 앱에는 연산자 알림을 받을 때마다 시스템에서 실행하는 backgroundtask.js 라는 JavaScript 파일이 있어야 합니다.

모바일 광대역 앱이 C#으로 작성된 경우 이벤트 자산은 backgroundtask 인터페이스를 구현하는 런타임 클래스를 가리킵니다.

<DeviceNotificationHandlers>
  <DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="MNOMessageBackground.OperatorNotification" />

서비스 메타데이터 및 앱을 다운로드하면 Device Setup Manager는 앱을 실행하기 전에 적절한 작업 항목을 System Event Broker에 등록합니다. 작업 항목이 등록된 직후 모바일 광대역 디바이스가 등록되거나 네트워크에 연결된 경우 MobileOperatorNotification 이벤트가 해당 MessageType과 함께 트리거됩니다.

메타데이터에서 백그라운드 작업 등록 변경

모바일 광대역 앱의 업데이트된 버전에서 백그라운드 작업 진입점이 변경된 경우 서비스 메타데이터의 DeviceNotificationHandler 요소도 변경해야 합니다.

서비스 메타데이터는 Windows 8, Windows 8.1 및 Windows 10 실행하는 컴퓨터에서 자동으로 업데이트됩니다. 모바일 광대역 앱은 Microsoft Store에서 업데이트됩니다. 서비스 메타데이터에서 DeviceNotificationHandler 백그라운드 작업 등록을 변경하지 않아야 합니다. 변경이 필요한 경우 서비스 메타데이터에는 모바일 광대역 앱을 업데이트하지 않은 사용자의 기능을 유지하기 위해 지원되는 모든 모바일 광대역 앱 버전에 사용되는 모든 다른 백그라운드 작업 진입점에 대한 참조가 포함되어야 합니다.

프로비저닝 XML에서 필터링 규칙 정의

Windows는 사용자로부터 XML 기반 프로비저닝 파일을 허용합니다. 프로비저닝 XML의 샘플 버전은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<CarrierProvisioning xmlns="http://www.microsoft.com/networking/CarrierControl/v1">
    <Global>
        <!-- Adjust the Carrier ID to fit match the Service Number in service metadata. Refer to the documentation about CarrierId. -->
        <CarrierId>{11111111-1111-1111-1111-111111111111}</CarrierId>
        <!-- Adjust the Susbscriber ID. Refer to the documentation about Subscriber ID's. -->
        <SubscriberId>1234567890</SubscriberId>
    </Global>
    <MBNProfiles>
        <DefaultProfile xmlns="http://www.microsoft.com/networking/CarrierControl/WWAN/v1">
            <!-- Adjust the profile name -->
            <Name>Contoso</Name>
          <AssociatedPlan>Limited</AssociatedPlan>
            <!-- Adjust the home provider name for the given SIM/Device -->
            <HomeProviderName>Contoso</HomeProviderName>
            <Context>
                <!-- Adjust the access string to your APN. -->
                <AccessString>Contoso.Contoso</AccessString>
                <!-- Adjust the UserLogonCred to fit your UserLogonCred. Refer to the documentation about UserLogonCred's. -->
                <UserLogonCred>
                    <UserName>user</UserName>
                    <Password>[PLACEHOLDER]</Password>
                </UserLogonCred>
            </Context>
        </DefaultProfile>
      <Messages xmlns="http://www.microsoft.com/networking/CarrierControl/WWAN/v1">
        <Message RuleId="Sample1" Silent="true">
          <SMSBearer ClassZeroOnly="false" Sender="18005551212"/>
          <!-- [^]* matches all messages from this sender, regardless of content -->
          <Pattern>[^]*</Pattern>
          <!-- Because no Fields are specified, this message will be passed to the operator app without parsing. -->
        </Message>
        <Message RuleId="Sample2" Silent="false">
          <!-- Parsing a simple usage message. -->
          <USSDBearer/>
          <Pattern>(\d+\.\d+)(\w+) of (\d+)(\w+) used as of (\S+)</Pattern>
          <!-- Using these field definitions, Windows will automatically update usage data before passing the message
               to the operator app. -->
          <Units G="GB" M="MB"/>
          <Fields>
            <!-- These fields are currently unordered, but an order will be required in RC. -->
            <Usage Group="1" UnitGroup="2"/>
            <UsageTimestamp Group="5" Format="%I:%M%p on %d %b"/>
            <DataLimit Group="3" UnitGroup="4"/>
          </Fields>
        </Message>
      </Messages>
  </MBNProfiles>
  <Provisioning />
</CarrierProvisioning>

계정 프로비저닝 메타데이터에 대한 자세한 내용은 계정 프로비저닝을 참조하세요.

문자 메시지를 연산자 메시지로 식별하는 규칙은 이 XML에서 정의할 수 있습니다.

  • 허용된 보낸 사람 Sender 특성은 알림이 도착할 수 있는 예약된 보낸 사람 주소를 지정합니다. (이 번호는 국제 형식을 포함하여 SMS 메시지에서 수신된 보낸 사람 번호와 정확히 일치해야 합니다.)

  • 패턴 텍스트 메시지에서 데이터 필드를 식별하고 선택적으로 추출하는 정규식입니다. 보낸 사람에서 모든 메시지를 일치 하려면 사용 하 여 패턴 [^]*합니다.

통신사 알림 및 시스템 이벤트 사용

인터넷 공유 환경 만들기 및 구성