Detalhes técnicos do evento de notificação da operadora móvel

Este tópico explica os detalhes técnicos de um evento de notificação da operadora móvel.

Conteúdo do evento

O conteúdo do evento MobileOperatorNotification inclui os seguintes campos:

Campo Descrição
MessageType Enumeração da mensagem que disparou o evento.
Interface O GUID que corresponde à interface física associada ao evento.
EncodingType O método de codificação da mensagem, se MessageType for SMS/USSD.
MessageDataSize O tamanho da mensagem, em bytes, se MessageType for SMS/USSD.
Mensagem A mensagem bruta recebida, se MessageType for SMS/USSD.

O evento MobileOperatorNotification habilita cada um dos cenários descritos em Cenários de notificação da operadora móvel diferenciando-os usando o campo MessageType no conteúdo do evento. Os MessageTypes são enumerados da seguinte maneira:

Enumeração 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

O item de trabalho associado ao evento MobileOperatorNotification deve começar com a lógica que diferencia efetivamente o MessageType e executa o código apropriado para cada cenário.

GSM/CDMA SMS e USSD

Uma mensagem de operador de entrada, incluindo SMS e USSD, dispara o evento MobileOperatorNotification junto com os MessageTypescorrespondentes apropriados. Os tipos exclusivos são EncodingType, MessageDataSize e Message.

DataPlanThresholdReached

Por padrão, esse tipo de mensagem está desabilitado. Você pode habilitá-lo usando metadados de provisionamento para especificar o campo DataUsageInMobileOperatorNotificationEnabled , conforme mostrado aqui.

<?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>

Para obter mais informações sobre metadados de provisionamento de conta, consulte Provisionamento de conta.

O evento é gerado com este MessageType quando os contadores de dados locais estimam que o uso (bytes enviados e recebidos) na interface de banda larga móvel foi alterado em 5% desde a última ocorrência, exceto nos seguintes casos:

  1. Quando conectado a uma rede doméstica (não móvel), se o limite do plano de dados não tiver sido especificado, esse evento será disparado a cada 100 MB de uso de dados locais.

  2. Quando conectado a uma rede móvel, o limite do plano de dados não se aplica e esse evento é disparado a cada 5 MB de uso de dados locais.

Os contadores de dados locais em Windows 8 são atualizados a cada um minuto; no máximo, esse evento é gerado uma vez por minuto em todos os cenários descritos. Em Windows 8.1 o evento é entregue em tempo real quando o limite de 5% é atingido.

Observação

Embora essas informações sejam um bom guia de primeira ordem, o Windows não pode considerar o tráfego não cobrado ou o uso em outros dispositivos que compartilham os mesmos limites de dados (como planos de família ou troca de SIM). Os aplicativos de operadora móvel devem usar contadores de dados locais apenas para uso aproximado desde a última sincronização com o próprio sistema de cobrança da operadora. Para o uso de dados que já foi processado, o sistema de cobrança deve ser considerado autoritativo.

DataPlanReset

Na data de redefinição do plano, o DUSM (Gerenciador de Assinatura e Uso de Dados) redefine o uso atual de dados locais do usuário como zero.

DataPlanDeleted

Para planos de dados pré-pagos que têm uma data de validade fixa, o DUSM exclui o perfil de conexão associado à conta na data de validade e o evento MobileOperatorNotification é disparado usando este MessageType. Quando o perfil de conexão é excluído, o Windows Gerenciador de Conexões não tenta mais se conectar automaticamente à rede descrita pelo perfil de conexão.

ProfileConnected e ProfileDisconnected

O evento MobileOperatorNotification é gerado com esses MessageTypesquando o Windows Gerenciador de Conexões se conecta ao perfil de rede fornecido pelos metadados de experiência do operador. Esse evento é disparado em cada conexão e desconexão, incluindo a conexão inicial que segue uma suspensão/retomada. Ele também será disparado se o dispositivo já estiver conectado quando os metadados do aplicativo e do serviço forem baixados e instalados.

O MessageType ProfileConnected é disparado na conectividade L2 para a interface de banda larga móvel.

Observação

Esse gatilho ocorre antes da conclusão da identificação de rede. O evento NetworkStatusChanged (parte da API NetworkInformation ) é gerado quando a identificação de rede determina o nível de conectividade da rede. Para obter mais informações sobre a identificação de rede, consulte Início Rápido: Recuperando informações de conexão de rede e a classe NetworkInformation .

RegisteredRoaming e RegisteredHome

O evento MobileOperatorNotification é gerado com esses MessageTypesquando o Windows Gerenciador de Conexões se registra em uma rede móvel. Esse evento é disparado em cada registro, incluindo o registro inicial após uma suspensão/retomada. Ele também será disparado se o dispositivo já estiver registrado na rede quando os metadados do aplicativo e do serviço forem baixados e instalados.

O aplicativo só deve notificar o usuário uma vez quando ele se registrar em uma rede móvel e uma vez quando ele retornar à rede doméstica. Como esse evento é disparado em cada registro, o aplicativo é responsável por manter o controle do estado registrado anteriormente nos dados de sessão do aplicativo.

TetheringEntitlementCheck

O evento MobileOperatorNotification é gerado com este MessageTypes quando o usuário ativa o Compartilhamento da Internet. O evento é disparado sempre que o usuário tenta usar o Compartilhamento da Internet, desde que a operadora móvel tenha definido o elemento AllowTethering no esquema de metadados de serviço como EntitlementCheckRequired. Para obter mais informações sobre o esquema de metadados de serviço, consulte Referência de esquema de pacote de metadados de serviço.

O aplicativo deve executar o mecanismo de marcar de direitos apropriado compatível com a rede da operadora móvel e enviar o resultado para o sistema usando o método AuthorizeTethering da classe NetworkOperatorNotificationEventDetails no namespace Windows.Networking.NetworkOperators. Se o aplicativo não tiver a capacidade de executar o direito marcar, a operadora móvel deverá alterar o elemento AllowTethering de Metadados de Serviço para Always ou Never, para que o evento nunca seja gerado.

Registre-se para o evento MobileOperatorNotification usando metadados

Em geral, um aplicativo deve ser executado pelo usuário pelo menos uma vez antes de poder registrar itens de trabalho com o Agente de Eventos do Sistema. No entanto, como os eventos MobileOperatorNotification são necessários para concluir os principais cenários de banda larga móvel, esse evento é associado ao aplicativo de banda larga móvel usando metadados de serviço. Nos metadados do serviço, configure o elemento DeviceCompanionApplications .

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

O atributo EventID informa ao sistema que tipo de evento esperar do dispositivo. O valor do atributo EventAsset deve apontar para o ponto de entrada que implementa a tarefa em segundo plano. Isso informará ao sistema qual tarefa executar quando esse evento específico tiver ocorrido.

Usando este exemplo, o sistema cria e registra um evento específico para esse dispositivo. Ele também registra o aplicativo de banda larga móvel para esse evento. O aplicativo deve ter um arquivo JavaScript chamado backgroundtask.js que é executado pelo sistema sempre que recebe uma notificação do operador.

Se o aplicativo de banda larga móvel for escrito em C#, o ativo de evento deverá apontar para a classe de runtime que implementa a interface backgroundtask.

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

Quando os metadados de serviço e o aplicativo são baixados, o Gerenciador de Configuração de Dispositivo registra o item de trabalho apropriado com o Agente de Eventos do Sistema antes que o aplicativo seja executado. Imediatamente após o item de trabalho ser registrado, se o dispositivo de banda larga móvel estiver registrado ou conectado à rede, o evento MobileOperatorNotification será disparado junto com o MessageType correspondente.

Alterar o registro de tarefas em segundo plano nos metadados

Se o ponto de entrada da tarefa em segundo plano for alterado em uma versão atualizada do aplicativo de banda larga móvel, o elemento DeviceNotificationHandler nos metadados do serviço também deverá ser alterado.

Os metadados de serviço são atualizados automaticamente em computadores que executam Windows 8, Windows 8.1 e Windows 10. Os aplicativos de banda larga móvel são atualizados na Microsoft Store. Você deve evitar alterar o registro da tarefa em segundo plano DeviceNotificationHandler nos metadados do serviço. Se uma alteração for necessária, os metadados do serviço deverão conter referências a todos os diferentes pontos de entrada de tarefa em segundo plano usados em todas as versões com suporte do aplicativo de banda larga móvel para preservar a funcionalidade dos usuários que não atualizaram o aplicativo de banda larga móvel.

Definir regras de filtragem no XML de provisionamento

O Windows aceita um arquivo de provisionamento baseado em XML de você. Uma versão de exemplo do XML de provisionamento é mostrada aqui:

<?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 Subscriber 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>

Para obter mais informações sobre metadados de provisionamento de conta, consulte Provisionamento de conta.

As regras para identificar uma mensagem de texto como uma mensagem de operador podem ser definidas neste XML.

  • Remetente permitido O atributo Sender especifica o endereço do remetente reservado do qual a notificação tem permissão para chegar. (Esse número deve corresponder exatamente ao número do remetente recebido na mensagem SMS, incluindo o formato internacional).

  • Padrão A expressão regular para identificar e, opcionalmente, extrair os campos de dados da mensagem de texto. Para corresponder a todas as mensagens de um remetente, use o padrão [^]*.

Habilitar notificações da operadora móvel e eventos do sistema

Criando e configurando experiências de compartilhamento de Internet