Détails techniques de l’événement de notification de l’opérateur mobile
Cette rubrique explique les détails techniques d’un événement de notification d’opérateur mobile.
S’inscrire à l’événement MobileOperatorNotification à l’aide de métadonnées
Définir des règles de filtrage dans le code XML d’approvisionnement
Charge utile d’événement
La charge utile de l’événement MobileOperatorNotification comprend les champs suivants :
Champ | Description |
---|---|
MessageType | Énumération du message qui a déclenché l’événement. |
Interface | GUID qui correspond à l’interface physique associée à l’événement. |
EncodingType | Méthode d’encodage du message, si MessageType est SMS/USSD. |
MessageDataSize | Taille du message, en octets, si MessageType est SMS/USSD. |
Message | Message brut reçu, si MessageType est SMS/USSD. |
L’événement MobileOperatorNotification active chacun des scénarios décrits dans les scénarios de notification de l’opérateur mobile en les différenciant à l’aide du champ MessageType dans la charge utile de l’événement. Les messages MessageTypesont énumérés comme suit :
Énumération | Type |
---|---|
0 | GSM SMS |
1 | CDMA SMS |
2 | USSD |
3 | DataPlanThresholdReached |
4 | DataPlanReset |
5 | DataPlanDeleted |
6 | ProfilConnecté |
7 | ProfileDisconnected |
8 | RegisteredRoaming |
9 | RegisteredHome |
10 | TetheringEntitlementCheck |
L’élément de travail associé à l’événement MobileOperatorNotification doit commencer par une logique qui différencie efficacement le MessageType et exécute le code approprié pour chaque scénario.
SMS GSM/CDMA et USSD
Un message d’opérateur entrant, y compris SMS et USSD, déclenche l’événement MobileOperatorNotification avec les messages MessageTypecorrespondants. Les types suivants sont EncodingType, MessageDataSize et Message.
DataPlanThresholdReached
Par défaut, ce type de message est désactivé. Vous pouvez l’activer à l’aide de métadonnées d’approvisionnement pour spécifier le champ DataUsageInMobileOperatorNotificationEnabled , comme illustré ici.
<?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>
Pour plus d’informations sur l’approvisionnement des métadonnées de compte, consultez Provisionnement de comptes.
L’événement est généré avec ce MessageType lorsque les compteurs de données locaux estiment que l’utilisation (octets envoyés et reçus) sur l’interface haut débit mobile a changé de 5 % depuis la dernière occurrence, sauf dans les cas suivants :
En cas de connexion à un réseau domestique (non itinérance), si la limite du plan de données n’a pas été spécifiée, cet événement est déclenché à chaque utilisation de 100 Mo de données locales.
Quand vous êtes connecté à un réseau itinérant, la limite du plan de données ne s’applique pas et cet événement est déclenché à chaque utilisation de 5 Mo de données locales.
Les compteurs de données locaux dans Windows 8 sont mis à jour toutes les minutes ; au maximum, cet événement est généré une fois par minute dans tous les scénarios décrits. En Windows 8.1 l’événement est remis en temps réel lorsque le seuil de 5 % a été atteint.
Notes
Bien que ces informations soient un bon guide de première commande, Windows ne peut pas tenir compte du trafic non facturé ou de l’utilisation sur d’autres appareils qui partagent les mêmes limites de données (tels que les plans familiaux ou l’échange de cartes SIM). Les applications d’opérateur mobile doivent utiliser des compteurs de données locaux uniquement pour estimer l’utilisation depuis la dernière synchronisation avec le propre système de facturation de l’opérateur. Pour l’utilisation des données déjà traitées, le système de facturation doit être considéré comme faisant autorité.
DataPlanReset
À la date de réinitialisation du plan, data usage and subscription Manager (DUSM) réinitialise l’utilisation actuelle des données locales de l’utilisateur à zéro.
DataPlanDeleted
Pour les plans de données prépayés qui ont une date d’expiration fixe, le DUSM supprime le profil de connexion associé au compte à la date d’expiration et l’événement MobileOperatorNotification est déclenché à l’aide de ce MessageType. Lorsque le profil de connexion est supprimé, Windows Gestionnaire des connexions ne tente plus de se connecter automatiquement au réseau décrit par le profil de connexion.
ProfileConnected et ProfileDisconnected
L’événement MobileOperatorNotification est généré avec ces MessageTypelorsque Windows Gestionnaire des connexions se connecte au profil réseau fourni par les métadonnées de l’expérience de l’opérateur. Cet événement est déclenché à chaque connexion et déconnexion, y compris la connexion initiale qui suit une mise en veille/reprise. Elle est également déclenchée si l’appareil est déjà connecté lorsque les métadonnées d’application et de service sont téléchargées et installées.
ProfileConnected MessageType est déclenché sur la connectivité L2 pour l’interface haut débit mobile.
Notes
Ce déclencheur se produit avant la fin de l’identification réseau. L’événement NetworkStatusChanged (qui fait partie de l’API NetworkInformation) est généré lorsque l’identification du réseau détermine le niveau de connectivité du réseau. Pour plus d’informations sur l’identification réseau, consultez Démarrage rapide : Récupération des informations de connexion réseau et la classe NetworkInformation .
RegisteredRoaming et RegisteredHome
L’événement MobileOperatorNotification est généré avec ces MessageTypelorsque Windows Gestionnaire des connexions s’inscrit à un réseau itinérant. Cet événement est déclenché à chaque inscription, y compris l’inscription initiale après une mise en veille/reprise. Elle est également déclenchée si l’appareil est déjà inscrit sur le réseau lorsque les métadonnées d’application et de service sont téléchargées et installées.
L’application ne doit avertir l’utilisateur qu’une seule fois lorsqu’il s’inscrit sur un réseau itinérant et une fois lorsqu’il retourne sur son réseau domestique. Étant donné que cet événement est déclenché à chaque inscription, l’application est responsable du suivi de l’état d’inscription précédent dans les données de session de l’application.
TetheringEntitlementCheck
L’événement MobileOperatorNotification est généré avec ce MessageTypes lorsque l’utilisateur active le partage Internet. L’événement est déclenché chaque fois que l’utilisateur tente d’utiliser le partage Internet tant que l’opérateur mobile a défini l’élément AllowTethering dans le schéma de métadonnées du service sur EntitlementCheckRequired. Pour plus d’informations sur le schéma des métadonnées de service, consultez Informations de référence sur le schéma du package de métadonnées de service.
L’application doit exécuter le mécanisme de droits d’utilisation approprié case activée pris en charge par le réseau d’opérateurs mobiles et envoyer le résultat au système à l’aide de la méthode AuthorizeTethering de la classe NetworkOperatorNotificationEventDetails dans l’espace de noms Windows.Networking.NetworkOperators. Si l’application n’a pas la possibilité d’exécuter le droit case activée, l’opérateur mobile doit remplacer l’élément Service Metadata AllowTethering par Always ou Never, afin que l’événement ne soit jamais généré.
S’inscrire à l’événement MobileOperatorNotification à l’aide de métadonnées
En général, une application doit être exécutée par l’utilisateur au moins une fois avant de pouvoir inscrire des éléments de travail auprès du répartiteur d’événements système. Toutefois, étant donné que les événements MobileOperatorNotification sont nécessaires pour effectuer des scénarios de haut débit mobile clés, cet événement est associé à l’application haut débit mobile à l’aide de métadonnées de service. Dans les métadonnées du service, configurez l’élément DeviceCompanionApplications .
<DeviceCompanionApplications>
<Package>
<Identity Name="MyOperatorNotification" Publisher="MyCorporation " />
<Applications>
<Application Id="MyOperatorNotification" />
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="backgroundtask.js" />
</DeviceNotificationHandlers>
</Applications>
</Package>
</DeviceCompanionApplications>
L’attribut EventID indique au système le type d’événement à attendre de l’appareil. La valeur de l’attribut EventAsset doit pointer vers le point d’entrée qui implémente la tâche en arrière-plan. Cela indique au système la tâche à exécuter lorsque cet événement particulier s’est produit.
À l’aide de cet exemple, le système crée et enregistre un événement spécifique à cet appareil. Il enregistre également l’application haut débit mobile pour cet événement. L’application doit avoir un fichier JavaScript appelé backgroundtask.js qui est exécuté par le système chaque fois qu’elle reçoit une notification d’opérateur.
Si l’application haut débit mobile est écrite en C#, la ressource d’événement doit pointer vers la classe runtime qui implémente l’interface backgroundtask.
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="MNOMessageBackground.OperatorNotification" />
Lorsque les métadonnées et l’application de service sont téléchargées, le Gestionnaire d’installation de l’appareil inscrit l’élément de travail approprié auprès du Service Broker d’événements système avant l’exécution de l’application. Immédiatement après l’inscription de l’élément de travail, si l’appareil haut débit mobile est inscrit ou connecté au réseau, l’événement MobileOperatorNotification est déclenché avec le MessageType correspondant.
Modifier l’inscription des tâches en arrière-plan dans les métadonnées
Si le point d’entrée de la tâche en arrière-plan est modifié dans une version mise à jour de l’application haut débit mobile, l’élément DeviceNotificationHandler dans les métadonnées du service doit également être modifié.
Les métadonnées de service sont mises à jour automatiquement sur les ordinateurs exécutant Windows 8, Windows 8.1 et Windows 10. Les applications haut débit mobiles sont mises à jour dans le Microsoft Store. Vous devez éviter de modifier l’inscription de la tâche en arrière-plan DeviceNotificationHandler dans les métadonnées du service. Si une modification est requise, les métadonnées du service doivent contenir des références à tous les différents points d’entrée de tâche en arrière-plan utilisés dans toutes vos versions prises en charge de l’application haut débit mobile afin de conserver les fonctionnalités pour les utilisateurs qui n’ont pas mis à jour l’application haut débit mobile.
Définir des règles de filtrage dans le code XML d’approvisionnement
Windows accepte un fichier d’approvisionnement XML de votre part. Un exemple de version du code XML d’approvisionnement est présenté ici :
<?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>
Pour plus d’informations sur les métadonnées d’approvisionnement de compte, consultez Provisionnement de compte.
Les règles permettant d’identifier un message texte en tant que message d’opérateur peuvent être définies dans ce code XML.
Expéditeur autorisé L’attribut Sender spécifie l’adresse de l’expéditeur réservée à partir de laquelle la notification est autorisée à arriver. (Ce numéro doit correspondre exactement au numéro d’expéditeur reçu dans le message SMS, y compris au format international).
Modèle Expression régulière permettant d’identifier et éventuellement d’extraire les champs de données du message texte. Pour faire correspondre tous les messages d’un expéditeur, utilisez le modèle
[^]*
.
Rubriques connexes
Activation des notifications de l’opérateur mobile et des événements système