Tekniska detaljer för mobiloperatörsmeddelandets händelse
I det här avsnittet beskrivs de tekniska detaljerna för en notifikationshändelse för mobiloperatörer.
Händelsedatapaket
Händelsenyttolasten MobileOperatorNotification innehåller följande fält:
Fält | Beskrivning |
---|---|
Meddelandetyp | Uppräkning av meddelandet som utlöste händelsen. |
Gränssnitt | Den GUID som motsvarar det fysiska gränssnitt som är associerat med händelsen. |
EncodingType | Kodningsmetoden för meddelandet, om MessageType- är SMS/USSD. |
MessageDataSize | Storleken på meddelandet, i byte, om MessageType är SMS/USSD. |
Meddelande | Det råa meddelandet som tas emot, om MessageType är SMS/USSD. |
Händelsen MobileOperatorNotification möjliggör var och en av de scenarier som beskrivs i Scenarier för mobiloperatörsmeddelanden genom att skilja dem åt med hjälp av fältet MessageType i händelsenyttolasten. MessageTypes räknas upp på följande sätt:
Uppräkning | Typ |
---|---|
0 | GSM SMS |
1 | CDMA SMS |
2 | USSD |
3 | Dataplanens gräns uppnådd |
4 | DataPlanReset |
5 | DataPlanTa bort |
6 | ProfileConnected |
7 | ProfilFrånkopplad |
8 | RegistreradRoaming |
9 | Registrerad Hem |
10 | Kontroll av rättigheter för internetdelning |
Arbetsobjektet som är associerat med händelsen MobileOperatorNotification bör börja med logik som effektivt särskiljer MessageType-och kör lämplig kod för varje scenario.
GSM/CDMA SMS och USSD
Ett inkommande operatörsmeddelande, inklusive SMS och USSD, utlöser händelsen MobileOperatorNotification tillsammans med de lämpliga motsvarande MessageType--meddelandena. Unika för dessa typer är EncodingType, MessageDataSizeoch Message.
Dataplanens gräns uppnådd
Som standard är den här meddelandetypen inaktiverad. Du kan aktivera det genom att använda konfigurationsmetadata för att ange fältet DataUsageInMobileOperatorNotificationEnabled, som du ser här.
<?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>
Mer information om metadata för kontoetablering finns i Kontoetablering.
Händelsen genereras med denna MessageType- när de lokala dataräknarna uppskattar att användningen av data (skickade och mottagna byte) på gränssnittet för mobilt bredband har ändrats med 5% sedan den senaste förekomsten, förutom i följande fall:
När du är ansluten till ett hemnätverk (icke-roaming) utlöses den här händelsen vid varje 100 MB lokal dataanvändning om dataplansgränsen inte har angetts.
När du är ansluten till ett roamingnätverk gäller inte dataplansgränsen och den här händelsen utlöses vid varje 5 MB lokal dataanvändning.
De lokala dataräknarna i Windows 8 uppdateras var minut. Som mest genereras den här händelsen en gång per minut i alla beskrivna scenarier. I Windows 8.1 levereras händelsen i realtid när tröskelvärdet 5% har nåtts.
Obs
Även om den här informationen är en bra förstaordningsguide kan Windows inte ta hänsyn till ej fakturerad trafik eller för användning på andra enheter som delar samma datagränser (till exempel familjeplaner eller SIM-byte). Mobilappar bör endast använda lokala dataräknare för att uppskatta användningen sedan den senaste synkroniseringen med operatörens eget faktureringssystem. För dataanvändning som redan har bearbetats bör faktureringssystemet betraktas som auktoritativt.
DataPlanReset
På planåterställningsdatumet återställer DuSM (Data Usage and Subscription Manager) användarens aktuella lokala dataanvändning till noll.
DataPlanTa bort
För förbetalda dataplaner som har ett fast utgångsdatum tar DUSM bort anslutningsprofilen som är associerad med kontot på förfallodatumet och händelsen MobileOperatorNotification utlöses med hjälp av den här MessageType-. När anslutningsprofilen tas bort försöker Windows Connection Manager inte längre ansluta automatiskt till nätverket som beskrivs av anslutningsprofilen.
ProfilAnsluten och ProfilFrånkopplad
Händelsen MobileOperatorNotification genereras med dessa MessageType-:s när Windows Connection Manager ansluter till nätverksprofilen som tillhandahålls genom operatörsupplevelsemetadata. Den här händelsen utlöses vid varje anslutning och frånkoppling, inklusive den första anslutningen som följer ett viloläge/återupptagning. Den utlöses också om enheten redan är ansluten när app- och tjänstmetadata laddas ned och installeras.
ProfileConnected MessageType utlöses på L2-anslutningen för det mobila bredbandsgränssnittet.
Notera
Den här triggen inträffar innan nätverksidentifieringen är klar. Händelsen NetworkStatusChanged (en del av NetworkInformation API) genereras när nätverksidentifieringen fastställer nätverkets anslutningsnivå. Mer information om nätverksidentifiering finns i Snabbstart: Hämtar information om nätverksanslutningar och klassen NetworkInformation.
RegisteredRoaming och RegisteredHome
Händelsen MobileOperatorNotification genereras med dessa MessageType-när Windows Connection Manager registreras i ett roamingnätverk. Den här händelsen utlöses vid varje registrering, inklusive den första registreringen efter ett viloläge/återupptagande. Den utlöses också om enheten redan är registrerad i nätverket när appens och tjänstens metadata laddas ned och installeras.
Appen bör bara meddela användaren en gång när användaren registrerar sig i ett roamingnätverk och en gång när de återvänder till sitt hemnätverk. Eftersom den här händelsen utlöses vid varje registrering ansvarar appen för att hålla reda på det tidigare registrerade tillståndet i appens sessionsdata.
Behörighetskontroll för internetdelning
Händelsen MobileOperatorNotification genereras med den här MessageTypenär användaren aktiverar Internetdelning. Händelsen utlöses varje gång användaren försöker använda Internetdelning så länge mobiloperatören har angett AllowTethering-elementet i tjänstens metadataschema till EntitlementCheckRequired. Mer information om schemat för tjänstmetadata finns i schemareferensen tjänstmetadatapaket.
Appen ska köra lämplig mekanism för berättigandekontroll som stöds av mobiloperatörsnätverket och skicka resultatet till systemet med hjälp av metoden AuthorizeTethering för NetworkOperatorNotificationEventDetails-klassen i Windows.Networking.NetworkOperators namnrymd. Om appen inte har möjlighet att köra berättigandekontrollen bör mobiloperatören ändra tjänstmetadata AllowTethering--elementet till Always eller Never, så att händelsen aldrig genereras.
Registrera dig för MobileOperatorNotification-händelsen med hjälp av metadata
I allmänhet måste en app köras av användaren minst en gång innan den kan registrera arbetsobjekt med System Event Broker. Men eftersom MobileOperatorNotification-händelserna krävs för att slutföra viktiga scenarier för mobilt bredband associeras den här händelsen med mobilappen för mobilt bredband med hjälp av tjänstmetadata. Konfigurera elementet DeviceCompanionApplications i tjänstmetadata.
<DeviceCompanionApplications>
<Package>
<Identity Name="MyOperatorNotification" Publisher="MyCorporation " />
<Applications>
<Application Id="MyOperatorNotification" />
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="backgroundtask.js" />
</DeviceNotificationHandlers>
</Applications>
</Package>
</DeviceCompanionApplications>
Attributet EventID talar om för systemet vilken typ av händelse som ska förväntas av enheten. Värdet för attributet EventAsset ska peka på startpunkten som implementerar bakgrundsaktiviteten. Detta talar om för systemet vilken uppgift som ska köras när den specifika händelsen har inträffat.
Med det här exemplet skapar och registrerar systemet en händelse som är specifik för den enheten. Den registrerar även mobilbredbandsappen för det här evenemanget. Appen måste ha en JavaScript-fil med namnet backgroundtask.js som körs av systemet varje gång den tar emot ett operatörsmeddelande.
Om mobilappen för mobilt bredband är skriven i C#, måste händelseresursen peka på körningsklassen som implementerar gränssnittet för bakgrundsuppgift.
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="MNOMessageBackground.OperatorNotification" />
När tjänstens metadata och app laddas ned registrerar Enhetsinstallationshanteraren lämpligt arbetsobjekt med System Event Broker innan appen körs. Omedelbart efter att arbetsobjektet har registrerats utlöses händelsen MobileOperatorNotification tillsammans med motsvarande MessageType-om den mobila bredbandsenheten är registrerad eller ansluten till nätverket.
Ändra registrering av bakgrundsaktiviteter i metadata
Om startpunkten för bakgrundsaktiviteten ändras i en uppdaterad version av mobilappen för mobilt bredband måste även DeviceNotificationHandler-elementet i tjänstmetadata ändras.
Tjänstens metadata uppdateras automatiskt på datorer som kör Windows 8, Windows 8.1 och Windows 10. Mobilappar för bredband uppdateras i Microsoft Store. Du bör undvika att ändra DeviceNotificationHandler registrering av bakgrundsaktiviteter i tjänstens metadata. Om en ändring krävs bör tjänstens metadata innehålla referenser till alla olika startpunkter för bakgrundsaktiviteter som används i alla dina versioner av mobilappen för mobilt bredband för att bevara funktioner för användare som inte har uppdaterat mobilappen för mobilt bredband.
Definiera filtreringsregler i etablering av XML
Windows accepterar en XML-baserad etableringsfil från dig. Ett exempel på en version av XML för konfiguration visas nedan.
<?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>
Mer information om metadata för kontoetablering finns i Kontoetablering.
Reglerna för att identifiera ett textmeddelande som ett operatormeddelande kan definieras i den här XML-koden.
Tillåten avsändare Attributet Avsändaren anger den reserverade avsändaradress som meddelandet tillåts komma från. (Det här numret måste exakt matcha avsändarnumret som tas emot i SMS-meddelandet, inklusive det internationella formatet).
Pattern Det reguljära uttrycket för att identifiera och eventuellt extrahera datafälten från textmeddelandet. Om du vill matcha alla meddelanden från en avsändare använder du mönstret
[^]*
.