Dettagli tecnici dell'evento di notifica dell'operatore mobile
Questo argomento illustra i dettagli tecnici di un evento di notifica dell'operatore mobile.
Payload dell'evento
Il payload dell'evento MobileOperatorNotification include i campi seguenti:
Campo | Descrizione |
---|---|
MessageType | Enumerazione del messaggio che ha attivato l'evento. |
Interfaccia | GUID corrispondente all'interfaccia fisica associata all'evento. |
EncodingType | Metodo di codifica per il messaggio, se MessageType è SMS/USSD. |
MessageDataSize | Dimensioni del messaggio, in byte, se MessageType è SMS/USSD. |
Message | Messaggio non elaborato ricevuto, se MessageType è SMS/USSD. |
L'evento MobileOperatorNotification consente a ognuno degli scenari descritti negli scenari di notifica dell'operatore mobile differenziandoli usando il campo MessageType nel payload dell'evento. L'enumerazione di MessageTypeè la seguente:
Enumerazione | Tipo |
---|---|
0 | GSM SMS |
1 | CDMA SMS |
2 | USSD |
3 | DataPlanThresholdReached |
4 | DataPlanReset |
5 | DataPlanDeleted |
6 | ProfileConnected |
7 | ProfileDisconnected |
8 | RegisteredRoaming |
9 | RegisteredHome |
10 | TetheringEntitlementCheck |
L'elemento di lavoro associato all'evento MobileOperatorNotification deve iniziare con la logica che differenzia in modo efficace MessageType ed esegue il codice appropriato per ogni scenario.
SMS GSM/CDMA e USSD
Un messaggio dell'operatore in ingresso, incluso SMS e USSD, attiva l'evento MobileOperatorNotification insieme all'oggetto MessageTypecorrispondente appropriato. Univoco per questi tipi sono EncodingType, MessageDataSize e Message.
DataPlanThresholdReached
Per impostazione predefinita, questo tipo di messaggio è disabilitato. È possibile abilitarlo usando i metadati di provisioning per specificare il campo DataUsageInMobileOperatorNotificationEnabled , come illustrato di seguito.
<?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>
Per altre informazioni sui metadati di provisioning degli account, vedere Provisioning account.
L'evento viene generato con questo MessageType quando i contatori dati locali stimano che l'utilizzo (byte inviati e ricevuti) nell'interfaccia a banda larga mobile è cambiato del 5% dall'ultima occorrenza, tranne nei casi seguenti:
Quando si è connessi a una rete domestica (non roaming), se il limite del piano dati non è stato specificato, questo evento viene attivato a ogni 100 MB di utilizzo dei dati locali.
Quando si è connessi a una rete roaming, il limite del piano dati non viene applicato e questo evento viene attivato a ogni 5 MB di utilizzo dei dati locali.
I contatori dati locali in Windows 8 vengono aggiornati ogni un minuto. Al massimo, questo evento viene generato una volta al minuto in tutti gli scenari descritti. In Windows 8.1 l'evento viene recapitato in tempo reale quando è stata raggiunta la soglia del 5%.
Nota
Anche se queste informazioni sono una buona guida di primo ordine, Windows non può tenere conto del traffico non fatturato o per l'utilizzo in altri dispositivi che condividono gli stessi limiti di dati (ad esempio piani di famiglia o scambio SIM). Le app dell'operatore mobile devono usare i contatori dati locali solo per l'utilizzo approssimativo dall'ultima sincronizzazione con il proprio sistema di fatturazione dell'operatore. Per l'utilizzo dei dati già elaborato, il sistema di fatturazione deve essere considerato autorevole.
DataPlanReset
Nella data di reimpostazione del piano, l'utilizzo dei dati e gestione sottoscrizioni (DUSM) reimposta l'utilizzo dei dati locali correnti dell'utente su zero.
DataPlanDeleted
Per i piani dati con pagamento anticipato con data di scadenza fissa, duSM elimina il profilo di connessione associato all'account nella data di scadenza e l'evento MobileOperatorNotification viene attivato usando questo MessageType. Quando il profilo di connessione viene eliminato, Windows Gestione connessioni non tenta più di connettersi automaticamente alla rete descritta dal profilo di connessione.
ProfileConnected e ProfileDisconnected
L'evento MobileOperatorNotification viene generato con questi messageTypequando Windows Gestione connessioni si connette al profilo di rete fornito dai metadati dell'esperienza dell'operatore. Questo evento viene attivato in ogni connessione e disconnessione, inclusa la connessione iniziale che segue una sospensione/ripresa. Viene attivato anche se il dispositivo è già connesso quando vengono scaricati e installati i metadati dell'app e del servizio.
ProfileConnected MessageType viene attivato sulla connettività L2 per l'interfaccia a banda larga mobile.
Nota
Questo trigger si verifica prima del completamento dell'identificazione della rete. L'evento NetworkStatusChanged (parte dell'API NetworkInformation ) viene generato quando l'identificazione della rete determina il livello di connettività della rete. Per altre informazioni sull'identificazione della rete, vedere Avvio rapido: Recupero delle informazioni sulla connessione di rete e della classe NetworkInformation .
RegisteredRoaming e RegisteredHome
L'evento MobileOperatorNotification viene generato con questi MessageTypequando Windows Gestione connessioni registra in una rete roaming. Questo evento viene attivato in ogni registrazione, inclusa la registrazione iniziale dopo una sospensione/ripresa. Viene attivato anche se il dispositivo è già registrato nella rete quando vengono scaricati e installati i metadati dell'app e del servizio.
L'app deve inviare una notifica all'utente una sola volta quando si registra in una rete roaming e una sola volta quando tornano alla rete domestica. Poiché questo evento viene attivato a ogni registrazione, l'app è responsabile di tenere traccia dello stato registrato precedente nei dati della sessione dell'app.
TetheringEntitlementCheck
L'evento MobileOperatorNotification viene generato con questo messageTypequando l'utente attiva La condivisione Internet. L'evento viene attivato ogni volta che l'utente tenta di usare La condivisione Internet purché l'operatore mobile abbia impostato l'elemento AllowTethering nello schema dei metadati del servizio su EntitlementCheckRequired. Per altre informazioni sullo schema dei metadati del servizio, vedere Informazioni di riferimento sullo schema del pacchetto di metadati del servizio.
L'app deve eseguire il meccanismo di controllo dei diritti appropriato supportato dalla rete dell'operatore mobile e inviare il risultato al sistema usando il metodo AuthorizeTethering della classe NetworkOperatorNotificationEventDetails nello spazio dei nomi Windows.Networking.NetworkOperators . Se l'app non ha la possibilità di eseguire il controllo di diritto, l'operatore mobile deve modificare l'elemento AllowTethering dei metadati del servizio in Always o Never, in modo che l'evento non venga mai generato.
Registrare l'evento MobileOperatorNotification usando i metadati
In generale, un'app deve essere eseguita dall'utente almeno una volta prima di poter registrare elementi di lavoro con System Event Broker. Tuttavia, poiché gli eventi MobileOperatorNotification sono necessari per completare gli scenari chiave della banda larga mobile, questo evento è associato all'app a banda larga mobile usando i metadati del servizio. Nei metadati del servizio configurare l'elemento DeviceCompanionApplications .
<DeviceCompanionApplications>
<Package>
<Identity Name="MyOperatorNotification" Publisher="MyCorporation " />
<Applications>
<Application Id="MyOperatorNotification" />
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="backgroundtask.js" />
</DeviceNotificationHandlers>
</Applications>
</Package>
</DeviceCompanionApplications>
L'attributo EventID indica al sistema quale tipo di evento aspettarsi dal dispositivo. Il valore dell'attributo EventAsset deve puntare al punto di ingresso che implementa l'attività in background. Questo indicherà al sistema l'attività da eseguire quando si è verificato tale evento specifico.
Usando questo esempio, il sistema crea e registra un evento specifico per tale dispositivo. Registra anche l'app a banda larga mobile per questo evento. L'app deve avere un file JavaScript denominato backgroundtask.js eseguito dal sistema ogni volta che riceve una notifica dell'operatore.
Se l'app mobile broadband è scritta in C#, l'asset evento deve puntare alla classe di runtime che implementa l'interfaccia backgroundtask.
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="MNOMessageBackground.OperatorNotification" />
Quando i metadati del servizio e l'app vengono scaricati, Gestione configurazione dispositivi registra l'elemento di lavoro appropriato con System Event Broker prima dell'esecuzione dell'app. Immediatamente dopo la registrazione dell'elemento di lavoro, se il dispositivo a banda larga mobile è registrato o connesso alla rete, l'evento MobileOperatorNotification viene attivato insieme al messageType corrispondente.
Modificare la registrazione dell'attività in background nei metadati
Se il punto di ingresso dell'attività in background viene modificato in una versione aggiornata dell'app a banda larga per dispositivi mobili, è necessario modificare anche l'elemento DeviceNotificationHandler nei metadati del servizio.
I metadati del servizio vengono aggiornati automaticamente nei computer che eseguono Windows 8, Windows 8.1 e Windows 10. Le app a banda larga per dispositivi mobili vengono aggiornate in Microsoft Store. È consigliabile evitare di modificare la registrazione dell'attività in background DeviceNotificationHandler nei metadati del servizio. Se è necessaria una modifica, i metadati del servizio devono contenere riferimenti a tutti i diversi punti di ingresso delle attività in background usati in tutte le versioni supportate dell'app a banda larga per dispositivi mobili per mantenere le funzionalità per gli utenti che non hanno aggiornato l'app a banda larga per dispositivi mobili.
Definire le regole di filtro nel provisioning XML
Windows accetta un file di provisioning basato su XML dall'utente. Di seguito viene illustrata una versione di esempio del codice XML di provisioning:
<?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>
Per altre informazioni sui metadati di provisioning degli account, vedere Provisioning account.
Le regole per identificare un messaggio di testo come messaggio di operatore possono essere definite in questo CODICE XML.
Mittente consentito L'attributo Sender specifica l'indirizzo del mittente riservato da cui è consentita l'arrivo della notifica. Questo numero deve corrispondere esattamente al numero di mittente ricevuto nel messaggio SMS, incluso il formato internazionale.
Modello Espressione regolare per identificare ed estrarre facoltativamente i campi dati dal messaggio di testo. Per corrispondere a tutti i messaggi di un mittente, usare il modello
[^]*
.
Argomenti correlati
Abilitazione delle notifiche degli operatori mobili e degli eventi di sistema
Creazione e configurazione di esperienze di condivisione Internet