Technische Details zum Benachrichtigungsereignis des Mobilfunkanbieters
In diesem Thema werden die technischen Details eines Benachrichtigungsereignisses eines Mobilfunkanbieters erläutert.
Ereignisnutzlast
Die Nutzlast des MobileOperatorNotification-Ereignisses enthält die folgenden Felder:
Feld | BESCHREIBUNG |
---|---|
MessageType | Enumeration der Nachricht, die das Ereignis ausgelöst hat. |
Interface | Die GUID, die der physischen Schnittstelle entspricht, die dem Ereignis zugeordnet ist. |
EncodingType | Die Codierungsmethode für die Nachricht, wenn MessageType SMS/USSD ist. |
MessageDataSize | Die Größe der Nachricht in Bytes, wenn MessageType SMS/USSD ist. |
Meldung | Die unformatierte Nachricht, die empfangen wird, wenn MessageType SMS/USSD ist. |
Das MobileOperatorNotification-Ereignis aktiviert jedes der Szenarien, die unter Benachrichtigungsszenarien für Mobilfunkanbieter beschrieben werden, indem es sie mithilfe des Felds MessageType in der Ereignisnutzlast unterscheidet. Die MessageTypes werden wie folgt aufgelistet:
Enumeration | type |
---|---|
0 | GSM-SMS |
1 | CDMA-SMS |
2 | USSD |
3 | DataPlanThresholdReached |
4 | DataPlanReset |
5 | DataPlanDeleted |
6 | ProfileConnected |
7 | ProfileDisconnected |
8 | RegisteredRoaming |
9 | RegistriertHome |
10 | TetheringEntitlementCheck |
Das Arbeitselement, das dem MobileOperatorNotification-Ereignis zugeordnet ist, sollte mit einer Logik beginnen, die den MessageType effektiv unterscheidet, und den entsprechenden Code für jedes Szenario ausführt.
GSM/CDMA SMS und USSD
Eine eingehende Operatornachricht, einschließlich SMS und USSD, löst das MobileOperatorNotification-Ereignis zusammen mit den entsprechenden MessageTypesaus. Eindeutig für diese Typen sind EncodingType, MessageDataSize und Message.
DataPlanThresholdReached
Dieser Nachrichtentyp ist standardmäßig deaktiviert. Sie können es aktivieren, indem Sie Bereitstellungsmetadaten verwenden, um das Feld DataUsageInMobileOperatorNotificationEnabled anzugeben, wie hier gezeigt.
<?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>
Weitere Informationen zu Metadaten für die Kontobereitstellung finden Sie unter Kontobereitstellung.
Das Ereignis wird mit diesem MessageType generiert, wenn die lokalen Datenzähler schätzen, dass sich die Nutzung (gesendete und empfangene Bytes) auf der mobilen Breitbandschnittstelle seit dem letzten Vorkommen um 5 % geändert hat, außer in den folgenden Fällen:
Wenn eine Verbindung mit einem Heimnetzwerk (ohne Roaming) besteht, wird dieses Ereignis bei jeder lokalen Datennutzung von 100 MB ausgelöst, wenn der Grenzwert für den Datenplan nicht angegeben wurde.
Wenn eine Verbindung mit einem Roamingnetzwerk besteht, gilt der Grenzwert für den Datentarif nicht, und dieses Ereignis wird bei jeder lokalen Datennutzung von 5 MB ausgelöst.
Die lokalen Datenzähler in Windows 8 werden alle eine Minute aktualisiert. Dieses Ereignis wird höchstens einmal pro Minute in allen beschriebenen Szenarien generiert. In Windows 8.1 wird das Ereignis in Echtzeit übermittelt, wenn der Schwellenwert von 5 % erreicht wurde.
Hinweis
Obwohl diese Informationen ein guter Leitfaden für die erste Bestellung sind, kann Windows nicht den nicht berechneten Datenverkehr oder die Nutzung auf anderen Geräten berücksichtigen, die dieselben Datenlimits verwenden (z. B. Familienpläne oder SIM-Austausch). Mobilfunkanbieter-Apps sollten lokale Datenzähler nur zur ungefähren Nutzung seit der letzten Synchronisierung mit dem eigenen Abrechnungssystem des Betreibers verwenden. Für bereits verarbeitete Datennutzung sollte das Abrechnungssystem als autoritativ betrachtet werden.
DataPlanReset
Am Planzurücksetzungsdatum setzt der Datennutzungs- und Abonnement-Manager (DUSM) die aktuelle lokale Datennutzung des Benutzers auf Null zurück.
DataPlanDeleted
Bei vorab bezahlten Datenplänen, die über ein festes Ablaufdatum verfügen, löscht dusm das Verbindungsprofil, das dem Konto am Ablaufdatum zugeordnet ist, und das MobileOperatorNotification-Ereignis wird mithilfe dieses MessageType ausgelöst. Wenn das Verbindungsprofil gelöscht wird, versucht Windows Verbindungs-Manager nicht mehr, automatisch eine Verbindung mit dem Netzwerk herzustellen, das im Verbindungsprofil beschrieben wird.
ProfileConnected und ProfileDisconnected
Das MobileOperatorNotification-Ereignis wird mit diesen MessageTypesgeneriert, wenn Windows Verbindungs-Manager eine Verbindung mit dem Netzwerkprofil herstellt, das von den Benutzererlebnismetadaten bereitgestellt wird. Dieses Ereignis wird bei jeder Verbindung und Trennung ausgelöst, einschließlich der ersten Verbindung, die auf einen Standby-/Fortsetzen folgt. Es wird auch ausgelöst, wenn das Gerät bereits verbunden ist, wenn die App- und Dienstmetadaten heruntergeladen und installiert werden.
ProfileConnected MessageType wird bei L2-Konnektivität für die mobile Breitbandschnittstelle ausgelöst.
Hinweis
Dieser Trigger tritt auf, bevor die Netzwerkidentifizierung abgeschlossen ist. Das NetworkStatusChanged-Ereignis (Teil der NetworkInformation-API ) wird generiert, wenn die Netzwerkidentifikation die Konnektivitätsebene des Netzwerks bestimmt. Weitere Informationen zur Netzwerkidentifikation finden Sie unter Schnellstart: Abrufen von Netzwerkverbindungsinformationen und der NetworkInformation-Klasse .
RegisteredRoaming und RegisteredHome
Das MobileOperatorNotification-Ereignis wird mit diesen MessageTypesgeneriert, wenn windows Verbindungs-Manager bei einem Roamingnetzwerk registriert wird. Dieses Ereignis wird bei jeder Registrierung ausgelöst, einschließlich der ersten Registrierung nach einem Standby-/Lebenslauf. Es wird auch ausgelöst, wenn das Gerät bereits beim Netzwerk registriert ist, wenn die App- und Dienstmetadaten heruntergeladen und installiert werden.
Die App sollte den Benutzer nur einmal benachrichtigen, wenn er sich in einem Roamingnetzwerk registriert, und einmal, wenn er in sein Heimnetzwerk zurückkehrt. Da dieses Ereignis bei jeder Registrierung ausgelöst wird, ist die App dafür verantwortlich, den vorherigen registrierten Status in den Sitzungsdaten der App nachzuverfolgen.
TetheringEntitlementCheck
Das MobileOperatorNotification-Ereignis wird mit diesem MessageTypes generiert, wenn der Benutzer die Internetfreigabe aktiviert. Das Ereignis wird jedes Mal ausgelöst, wenn der Benutzer versucht, die Internetfreigabe zu verwenden, solange der Mobilfunkanbieter das AllowTethering-Element im Dienstmetadatenschema auf EntitlementCheckRequired festgelegt hat. Weitere Informationen zum Dienstmetadatenschema finden Sie unter Dienstmetadatenpaketschemareferenz.
Die App sollte den entsprechenden Berechtigungsprüfungsmechanismus ausführen, der vom Mobilfunkanbieternetzwerk unterstützt wird, und das Ergebnis mithilfe der AuthorizeTethering-Methode der NetworkOperatorNotificationEventDetails-Klasse im Windows.Networking.NetworkOperators-Namespace an das System senden. Wenn die App nicht in der Lage ist, die Berechtigungsprüfung auszuführen, sollte der Mobilfunkanbieter das AllowTethering-Element der Dienstmetadaten in Always oder Never ändern, damit das Ereignis nie generiert wird.
Registrieren für das MobileOperatorNotification-Ereignis mithilfe von Metadaten
Im Allgemeinen muss eine App vom Benutzer mindestens einmal ausgeführt werden, bevor sie Arbeitselemente beim Systemereignisbroker registrieren kann. Da die MobileOperatorNotification-Ereignisse jedoch erforderlich sind, um wichtige Szenarien für mobiles Breitband abzuschließen, wird dieses Ereignis der mobilen Breitband-App mithilfe von Dienstmetadaten zugeordnet. Konfigurieren Sie in den Dienstmetadaten das DeviceCompanionApplications-Element .
<DeviceCompanionApplications>
<Package>
<Identity Name="MyOperatorNotification" Publisher="MyCorporation " />
<Applications>
<Application Id="MyOperatorNotification" />
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="backgroundtask.js" />
</DeviceNotificationHandlers>
</Applications>
</Package>
</DeviceCompanionApplications>
Das EventID-Attribut teilt dem System mit, welche Art von Ereignis vom Gerät zu erwarten ist. Der Wert des EventAsset-Attributs sollte auf den Einstiegspunkt verweisen, der die Hintergrundaufgabe implementiert. Dadurch wird dem System mitgeteilt, welche Aufgabe ausgeführt werden soll, wenn dieses bestimmte Ereignis aufgetreten ist.
In diesem Beispiel erstellt und registriert das System ein Ereignis, das für dieses Gerät spezifisch ist. Außerdem wird die mobile Breitband-App für dieses Ereignis registriert. Die App muss über eine JavaScript-Datei namens backgroundtask.js verfügen, die vom System jedes Mal ausgeführt wird, wenn sie eine Operatorbenachrichtigung empfängt.
Wenn die mobile Breitband-App in C# geschrieben ist, muss das Ereignisobjekt auf die Laufzeitklasse verweisen, die die backgroundtask-Schnittstelle implementiert.
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="MNOMessageBackground.OperatorNotification" />
Wenn die Dienstmetadaten und die App heruntergeladen werden, registriert der Geräteeinrichtungs-Manager das entsprechende Arbeitselement beim System Event Broker, bevor die App ausgeführt wird. Wenn das mobile Breitbandgerät registriert oder mit dem Netzwerk verbunden ist, wird unmittelbar nach der Registrierung des Arbeitselements das MobileOperatorNotification-Ereignis zusammen mit dem entsprechenden MessageType ausgelöst.
Ändern der Registrierung von Hintergrundaufgaben in Metadaten
Wenn der Einstiegspunkt der Hintergrundaufgabe in einer aktualisierten Version der mobilen Breitband-App geändert wird, muss auch das DeviceNotificationHandler-Element in den Dienstmetadaten geändert werden.
Dienstmetadaten werden automatisch auf Computern aktualisiert, auf denen Windows 8, Windows 8.1 und Windows 10 ausgeführt wird. Mobile Breitband-Apps werden im Microsoft Store aktualisiert. Sie sollten vermeiden, die Registrierung der DeviceNotificationHandler-Hintergrundaufgabe in Dienstmetadaten zu ändern. Wenn eine Änderung erforderlich ist, sollten die Dienstmetadaten Verweise auf alle verschiedenen Einstiegspunkte für Hintergrundaufgaben enthalten, die in allen unterstützten Versionen der mobilen Breitband-App verwendet werden, um die Funktionalität für Benutzer beizubehalten, die die mobile Breitband-App nicht aktualisiert haben.
Definieren von Filterregeln in der XML-Bereitstellung
Windows akzeptiert eine XML-basierte Bereitstellungsdatei von Ihnen. Eine Beispielversion der Bereitstellungs-XML wird hier gezeigt:
<?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>
Weitere Informationen zu Metadaten zur Kontobereitstellung finden Sie unter Kontobereitstellung.
Die Regeln zum Identifizieren einer Textnachricht als Operatornachricht können in diesem XML-Code definiert werden.
Zulässiger Absender Das Sender-Attribut gibt die reservierte Absenderadresse an, von der die Benachrichtigung eingehen darf. (Diese Nummer muss genau mit der Absendernummer übereinstimmen, die in der SMS-Nachricht empfangen wird, einschließlich des internationalen Formats).
Muster Der reguläre Ausdruck, um die Datenfelder zu identifizieren und optional aus der Textnachricht zu extrahieren. Verwenden Sie das Muster
[^]*
, um alle Nachrichten eines Absenders abzugleichen.
Verwandte Themen
Aktivieren von Mobilfunkanbieterbenachrichtigungen und Systemereignissen