Technické detaily události upozornění od mobilního operátora
Toto téma vysvětluje technické podrobnosti události oznámení mobilního operátora.
Datová část události
Datová část události MobileOperatorNotification obsahuje následující pole:
Pole | Popis |
---|---|
TypZprávy | Výčet zprávy, která aktivovala událost. |
rozhraní | Identifikátor GUID, který odpovídá fyzickému rozhraní přidruženému k události. |
TypKódování | Metoda kódování zprávy, pokud MessageType je SMS/USSD. |
MessageDataSize | Velikost zprávy v bajtech, pokud MessageType je SMS/USSD. |
Zpráva | Přijatá nezpracovaná zpráva, pokud je MessageType SMS/USSD. |
Událost MobileOperatorNotification umožňuje jednotlivé scénáře popsané ve scénářích oznámení operátora Mobile jejich odlišením pomocí pole MessageType v datové části události. MessageTypes jsou uvedené následujícím způsobem:
Výčet | Typ |
---|---|
0 | GSM SMS |
1 | CDMA SMS |
2 | USSD |
3 | Byl dosažen limit datového plánu |
4 | DataPlanReset |
5 | DataPlanDeleted |
6 | ProfileConnected |
7 | ProfilOdpojen |
8 | Registrované roaming |
9 | Registrovaný domov |
10 | Kontrola oprávnění pro sdílení internetu |
Pracovní položka přidružená k události MobileOperatorNotification by měla začínat logikou, která efektivně rozlišuje MessageTypea spouští příslušný kód pro každý scénář.
GSM/CDMA SMS a USSD
Příchozí zpráva operátoru, včetně SMS a USSD, aktivuje událost oznámení mobilního operátora spolu s příslušnými MessageTypes. Pro tyto typy jsou charakteristické EncodingType, MessageDataSizea Message.
Překročení limitu datového plánu
Ve výchozím nastavení je tento typ zprávy zakázaný. Můžete ho povolit pomocí zřizovacích metadat a zadat pole DataUsageInMobileOperatorNotificationEnabled, jak je ukázáno zde.
<?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>
Další informace o metadatech zřizování účtů najdete v tématu Zřizování účtů.
Událost se vygeneruje s tímto MessageType, když místní čítače dat odhadují, že využití dat (odeslané a přijalé bajty) v mobilním širokopásmovém rozhraní se od poslední události změnilo o 5% s výjimkou následujících případů:
Pokud není zadaný limit datového tarifu při připojení k domácí síti (bez roamingu), aktivuje se tato událost při každém 100 MB využití místních dat.
Při připojení k roamingové síti se limit datového tarifu nepoužije a tato událost se aktivuje při každém 5 MB využití místních dat.
Čítače místních dat ve Windows 8 se aktualizují každou minutu; Tato událost se většinou generuje jednou za minutu ve všech popsaných scénářích. Ve Windows 8.1 je událost doručena v reálném čase, jakmile je dosaženo prahové hodnoty 5%.
Poznámka
I když jsou tyto informace dobrým průvodcem pro základní orientaci, systém Windows nemůže počítat s neúčtovaným provozem ani pro užití na jiných zařízeních, která sdílejí stejná omezení dat, například u rodinných tarifů nebo při výměně SIM karty. Aplikace mobilních operátorů by měly používat čítače místních dat pouze k přibližnému využití od poslední synchronizace s vlastním fakturačním systémem operátora. U již zpracovaných dat by měl být fakturační systém považován za autoritativní.
DataPlanReset
V den resetování plánu resetuje správce využití dat a předplatného (DUSM) aktuální využití místních dat uživatele na nulu.
DataPlanDeleted
U předplacených datových plánů s pevným datem vypršení platnosti DUSM odstraní profil připojení přidružený k účtu k datu vypršení platnosti a událost MobileOperatorNotification se aktivuje použitím této MessageType. Po odstranění profilu připojení se Správce připojení systému Windows už nebude pokusí automaticky připojit k síti, která je popsána profilem připojení.
ProfilPřipojen a ProfilOdpojen
Událost MobileOperatorNotification se vygeneruje s těmito MessageTypes, když se Správce připojení systému Windows připojí k profilu sítě, který poskytuje metadata prostředí operátora. Tato událost se aktivuje při každém připojení a odpojení, včetně počátečního připojení, které následuje po režimu spánku nebo obnovení. Aktivuje se také v případě, že je zařízení již připojené, když se stahují a instalují metadata aplikace a služby.
ProfileConnected MessageType se aktivuje na úrovni L2 připojení pro mobilní širokopásmové rozhraní.
Poznámka
K této aktivační události dochází před dokončením identifikace sítě. Událost NetworkStatusChanged (součást rozhraní API NetworkInformation) se vygeneruje, když identifikace sítě určuje úroveň připojení sítě. Další informace o identifikaci sítě naleznete v tématu Rychlý start: Načítání informací o síťovém připojení a třída NetworkInformation.
Registrovaný Roaming a Registrovaný Domov
Událost MobileOperatorNotification se vygeneruje s těmito typy zpráv MessageType, když se Správce připojení systému Windows zaregistruje k roamingové síti. Tato událost se aktivuje při každé registraci, včetně počáteční registrace po přechodu do režimu spánku a opětovném probuzení. Aktivuje se také v případě, že je zařízení už zaregistrované v síti, když se stáhnou a nainstalují metadata aplikace a služby.
Aplikace by měla uživatele upozornit jenom jednou, když se zaregistruje v roamingové síti a jednou, když se vrátí do domácí sítě. Vzhledem k tomu, že se tato událost aktivuje při každé registraci, zodpovídá aplikace za sledování předchozího registrovaného stavu v datech relace aplikace.
KontrolaOprávněníKPropojení
Událost MobileOperatorNotification se vygeneruje s tímto MessageTypes, když uživatel zapne sdílení internetu. Událost se spustí pokaždé, když uživatel zkusí použít sdílení internetu, pokud mobilní operátor v metadatech služby nastaví prvek AllowTethering na EntitlementCheckRequired. Další informace o schématu metadat služby najdete v tématu Referenční informace o schématu balíčku metadat služby.
Aplikace by měla spustit příslušný mechanismus kontroly nároků podporovaný sítí mobilního operátora a odeslat výsledek do systému pomocí metody AuthorizeTethering třídy NetworkOperatorNotificationEventDetails v rámci oboru názvů Windows.Networking.NetworkOperators. Pokud aplikace nemá možnost spustit kontrolu nároků, mobilní operátor by měl změnit element metadata služby AllowTethering na Always nebo Never, aby se událost nikdy negenerovala.
Registrace události MobileOperatorNotification pomocí metadat
Obecně platí, že aplikaci musí uživatel spustit alespoň jednou, aby mohl zaregistrovat pracovní položky u zprostředkovatele událostí systému. Vzhledem k tomu, že události MobileOperatorNotification jsou nutné k dokončení klíčových scénářů mobilního širokopásmového připojení, je tato událost přidružená k mobilní širokopásmové aplikaci pomocí metadat služby. V metadatech služby nakonfigurujte element DeviceCompanionApplications.
<DeviceCompanionApplications>
<Package>
<Identity Name="MyOperatorNotification" Publisher="MyCorporation " />
<Applications>
<Application Id="MyOperatorNotification" />
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="backgroundtask.js" />
</DeviceNotificationHandlers>
</Applications>
</Package>
</DeviceCompanionApplications>
Atribut EventID říká systému, jaký druh události má zařízení očekávat. Hodnota atributu EventAsset by měla odkazovat na vstupní bod, který implementuje úlohu na pozadí. Tím systému sdělíte, která úloha se má spustit, když k této konkrétní události došlo.
V tomto příkladu systém vytvoří a zaregistruje událost specifickou pro dané zařízení. Také zaregistruje mobilní širokopásmovou aplikaci pro tuto událost. Aplikace musí mít javascriptový soubor s názvem backgroundtask.js, který je spuštěn systémem pokaždé, když obdrží oznámení operátora.
Pokud je mobilní širokopásmová aplikace napsaná v jazyce C#, prostředek události musí odkazovat na třídu runtime, která implementuje rozhraní backgroundtask.
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="MNOMessageBackground.OperatorNotification" />
Po stažení metadat služby a aplikace správce instalace zařízení před spuštěním aplikace zaregistruje příslušnou pracovní položku ve zprostředkovateli událostí systému. Ihned po registraci pracovní položky, pokud je mobilní širokopásmové zařízení registrováno nebo připojeno k síti, se událost mobileOperatorNotification aktivuje společně s odpovídajícím MessageType.
Změna registrace úlohy na pozadí v metadatech
Pokud se vstupní bod úlohy na pozadí změní v aktualizované verzi mobilní širokopásmové aplikace, musí být také změněn prvek DeviceNotificationHandler element v metadatech služby.
Metadata služby se automaticky aktualizují na počítačích s Windows 8, Windows 8.1 a Windows 10. Mobilní širokopásmové aplikace se aktualizují v Microsoft Storu. Měli byste se vyhnout změně registrace úlohy na pozadí DeviceNotificationHandler v metadatech služby. Pokud je potřeba provést změnu, metadata služby by měla obsahovat odkazy na všechny různé vstupní body úlohy na pozadí používané ve všech podporovaných verzích mobilní širokopásmové aplikace, aby se zachovaly funkce pro uživatele, kteří neaktualizovali mobilní širokopásmovou aplikaci.
Definování pravidel filtrování ve zřizovacím kódu XML
Systém Windows přijímá zřizovací soubor založený na jazyce XML. Tady je ukázková verze zřizovacího KÓDU 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 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>
Další informace o metadatech zřizování účtů najdete v tématu Zřizování účtů.
Pravidla pro identifikaci textové zprávy jako zprávy operátora lze definovat v tomto XML.
Povoleného odesílatele Atribut Sender určuje rezervovanou adresu odesílatele, ze které může oznámení dorazit. (Toto číslo musí přesně odpovídat číslu odesílatele přijatému ve zprávě SMS, včetně mezinárodního formátu).
Vzor Regulární výraz k identifikaci a volitelnému extrahování datových polí z textové zprávy. Chcete-li spárovat všechny zprávy od odesílatele, použijte vzor
[^]*
.
Související témata
Povolení oznámení mobilních operátorů a systémových událostí