Технические сведения о событии уведомления оператора мобильной связи
В этом разделе описываются технические сведения о событии уведомления оператора мобильной связи.
Полезные данные события
Полезные данные события MobileOperatorNotification включают следующие поля:
Поле | Описание |
---|---|
MessageType | Перечисление сообщения, которое активировало событие. |
Интерфейс | GUID, соответствующий физическому интерфейсу, связанному с событием. |
EncodingType | Метод кодирования для сообщения, если MessageType имеет значение SMS/USSD. |
MessageDataSize | Размер сообщения в байтах, если MessageType имеет значение SMS/USSD. |
Message | Полученное необработанное сообщение, если MessageType имеет значение SMS/USSD. |
Событие MobileOperatorNotification включает каждый из сценариев, описанных в разделе Сценарии уведомлений оператора мобильной связи, различая их с помощью поля MessageType в полезных данных события. MessageTypesперечисляются следующим образом:
Перечисление | Тип |
---|---|
0 | SMS-сообщение в СЕТИ |
1 | CDMA SMS |
2 | USSD |
3 | DataPlanThresholdReached |
4 | DataPlanReset |
5 | DataPlanDeleted |
6 | ProfileConnected |
7 | ProfileDisconnected |
8 | RegisteredRoaming |
9 | RegisteredHome |
10 | TetheringEntitlementCheck |
Рабочий элемент, связанный с событием MobileOperatorNotification, должен начинаться с логики, которая эффективно дифференцирует MessageType и выполняет соответствующий код для каждого сценария.
SMS и USSD ДЛЯ SMS и CDMA
Входящее сообщение оператора, включая SMS и USSD, активирует событие MobileOperatorNotification вместе с соответствующими messageTypes. Эти типы уникальны: EncodingType, MessageDataSize и Message.
DataPlanThresholdReached
По умолчанию этот тип сообщения отключен. Его можно включить с помощью метаданных подготовки, чтобы указать поле DataUsageInMobileOperatorNotificationEnabled , как показано ниже.
<?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>
Дополнительные сведения о метаданных подготовки учетных записей см. в разделе Подготовка учетных записей.
Событие создается с помощью этого messageType , когда локальные счетчики данных оценивают, что использование (отправленных и полученных байтов) в интерфейсе мобильной широкополосной связи изменилось на 5 % с момента последнего появления, за исключением следующих случаев:
При подключении к домашней сети (без роуминга), если ограничение плана данных не указано, это событие активируется при каждых 100 МБ использования локальных данных.
При подключении к перемещаемой сети ограничение плана данных не применяется, и это событие активируется каждые 5 МБ использования локальных данных.
Локальные счетчики данных в Windows 8 обновляются каждую минуту. Это событие создается не более одного раза в минуту во всех описанных сценариях. В Windows 8.1 событие доставляется в режиме реального времени при достижении порогового значения 5 %.
Примечание
Хотя эта информация является хорошим руководством первого порядка, Windows не может учитывать необреченный трафик или использование на других устройствах с одинаковыми ограничениями данных (например, семейные планы или переключение SIM-карт). Приложения мобильных операторов должны использовать локальные счетчики данных только для приблизительного использования с момента последней синхронизации с собственной системой выставления счетов оператора. Для использования данных, которые уже были обработаны, система выставления счетов должна считаться заслуживающей доверия.
DataPlanReset
На дату сброса плана диспетчер использования данных и подписок (DUSM) сбрасывает текущее использование локальных данных пользователем до нуля.
DataPlanDeleted
Для планов с предоплаченными данными с фиксированной датой окончания срока действия DUSM удаляет профиль подключения, связанный с учетной записью, в дату окончания срока действия, а событие MobileOperatorNotification активируется с помощью этого типа messageType. При удалении профиля подключения Windows диспетчер подключений больше не пытается автоматически подключиться к сети, описанной в профиле подключения.
ProfileConnected и ProfileDisconnected
Событие MobileOperatorNotification создается с помощью этих объектов MessageType, когда Windows диспетчер подключений подключается к сетевому профилю, предоставленному метаданными взаимодействия оператора. Это событие активируется при каждом подключении и отключении, включая начальное подключение, которое следует за спящего режима или возобновления. Он также активируется, если устройство уже подключено при скачивании и установке метаданных приложения и службы.
ProfileConnected MessageType активируется при подключении L2 для интерфейса мобильной широкополосной связи.
Примечание
Этот триггер возникает до завершения идентификации сети. Событие NetworkStatusChanged (часть API NetworkInformation ) создается, когда идентификация сети определяет уровень подключения сети. Дополнительные сведения об идентификации сети см. в статье Краткое руководство. Получение сведений о сетевом подключении и класс NetworkInformation .
RegisteredRoaming и RegisteredHome
Событие MobileOperatorNotification создается с этими типами MessageType, когда Windows диспетчер подключений регистрируется в роуминговой сети. Это событие активируется при каждой регистрации, включая начальную регистрацию после спящего режима или возобновления. Он также активируется, если устройство уже зарегистрировано в сети при скачивании и установке метаданных приложения и службы.
Приложение должно уведомлять пользователя только один раз, когда он регистрируется в роуминге, и один раз, когда он возвращается в свою домашнюю сеть. Так как это событие активируется при каждой регистрации, приложение отвечает за отслеживание предыдущего зарегистрированного состояния в данных сеанса приложения.
TetheringEntitlementCheck
Событие MobileOperatorNotification создается с помощью messageTypes, когда пользователь включает общий доступ к Интернету. Событие активируется каждый раз, когда пользователь пытается использовать общий доступ к Интернету, если оператор мобильной связи задал элементу AllowTethering в схеме метаданных службы значение EntitlementCheckRequired. Дополнительные сведения о схеме метаданных службы см. в статье Справочник по схеме пакета метаданных службы.
Приложение должно запустить соответствующий механизм проверка прав, поддерживаемый сетью оператора мобильной связи, и отправить результат в систему с помощью метода AuthorizeTethering класса NetworkOperatorNotificationEventDetails в пространстве имен Windows.Networking.NetworkOperators. Если приложение не имеет возможности запускать проверка прав, оператор мобильной связи должен изменить элемент Service Metadata AllowTethering на Always или Never, чтобы событие никогда не создавалось.
Регистрация для события MobileOperatorNotification с помощью метаданных
Как правило, приложение должно запускаться пользователем по крайней мере один раз, прежде чем он сможет регистрировать рабочие элементы в брокере системных событий. Однако, поскольку события MobileOperatorNotification необходимы для выполнения ключевых сценариев мобильной широкополосной связи, это событие связывается с мобильным широкополосным приложением с помощью метаданных службы. В метаданных службы настройте элемент DeviceCompanionApplications .
<DeviceCompanionApplications>
<Package>
<Identity Name="MyOperatorNotification" Publisher="MyCorporation " />
<Applications>
<Application Id="MyOperatorNotification" />
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="backgroundtask.js" />
</DeviceNotificationHandlers>
</Applications>
</Package>
</DeviceCompanionApplications>
Атрибут EventID сообщает системе, какое событие следует ожидать от устройства. Значение атрибута EventAsset должно указывать на точку входа, реализующую фоновую задачу. Это сообщит системе, какую задачу следует выполнять при возникновении этого конкретного события.
В этом примере система создает и регистрирует событие, относящееся к этому устройству. Он также регистрирует мобильное широкополосное приложение для этого события. Приложение должно иметь файл JavaScript с именем backgroundtask.js, который запускается системой при каждом получении уведомления оператора.
Если мобильное широкополосное приложение написано на C#, ресурс событий должен указывать на класс среды выполнения, реализующий интерфейс backgroundtask.
<DeviceNotificationHandlers>
<DeviceNotificationHandler EventID="MobileOperatorNotificationHandler" EventAsset="MNOMessageBackground.OperatorNotification" />
При скачивании метаданных службы и приложения диспетчер установки устройств регистрирует соответствующий рабочий элемент в брокере системных событий перед запуском приложения. Сразу после регистрации рабочего элемента, если мобильное широкополосное устройство зарегистрировано или подключено к сети, событие MobileOperatorNotification запускается вместе с соответствующим MessageType.
Изменение регистрации фоновой задачи в метаданных
Если точка входа фоновой задачи изменяется в обновленной версии мобильного широкополосного приложения, необходимо также изменить элемент DeviceNotificationHandler в метаданных службы.
Метаданные службы автоматически обновляются на компьютерах под управлением Windows 8, Windows 8.1 и Windows 10. Мобильные широкополосные приложения обновляются в Microsoft Store. Не следует изменять регистрацию фоновой задачи DeviceNotificationHandler в метаданных службы. Если требуется изменение, метаданные службы должны содержать ссылки на все различные точки входа фоновых задач, используемые во всех поддерживаемых версиях приложения мобильной широкополосной связи, чтобы сохранить функциональные возможности для пользователей, которые не обновили мобильное широкополосное приложение.
Определение правил фильтрации в XML-файле подготовки
Windows принимает файл подготовки на основе XML. Ниже приведен пример версии 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>
Дополнительные сведения о метаданных подготовки учетных записей см. в разделе Подготовка учетных записей.
Правила для идентификации текстового сообщения в качестве сообщения оператора можно определить в этом XML- коде.
Разрешенный отправитель Атрибут Sender указывает зарезервированный адрес отправителя, с которого может поступать уведомление. (Этот номер должен точно соответствовать номеру отправителя, полученному в SMS-сообщении, включая международный формат).
Узор Регулярное выражение для идентификации и при необходимости извлечения полей данных из текстового сообщения. Чтобы сопоставить все сообщения от отправителя, используйте шаблон
[^]*
.
Связанные темы
Включение уведомлений оператора мобильной связи и системных событий
Создание и настройка возможностей общего доступа к Интернету