Разработка приложений с помощью нескольких контекстов PDP
Контекст протокола передачи данных пакетов (PDP) обеспечивает пакетное соединение передачи данных, через которое устройство и мобильная сеть могут обмениваться IP-пакетами. В соответствии со стандартами 3GPP устройство может одновременно активировать несколько контекстов PDP. В Windows 8.1 и Windows 10 поддерживаются несколько контекстов PDP и позволяют приложениям обмениваться данными по специальным контекстам PDP с мобильными сетями, а также контекстом PDP в Интернете, поддерживаемым в Windows 8. Эту функцию можно использовать для создания разных возможностей и инновационных служб в Windows. Вы также можете сотрудничать с разработчиками приложений для разработки высококачественных возможностей VOIP и потоковой передачи видео для своих клиентов.
Ниже приведен рисунок, показывающий, как работает несколько контекстов PDP в Windows 8.1 и Windows 10:
Дополнительные сведения о нескольких контекстах PDP см. в следующих разделах.
Ключевые сценарии
Для включения служб класса Premium можно использовать несколько контекстов PDP.
Дифференцированное выставление счетов Вы можете изменять ограничения на передачу данных или выставление счетов с помощью нескольких контекстов PDP. Например, Contoso — это мобильный оператор, который разработал приложение резервного копирования данных для своих клиентов. Будучи мобильным оператором, Contoso может создать несколько контекстов PDP и позволить премиум подписчикам бесплатно использовать приложение. Плата за использование всех остальных подписчиков взимается отдельно.
расширенные службы коммуникации — глобальная инициатива, созданная ассоциацией GSM для предоставления расширенных услуг связи, таких как расширенные телефонные книги, расширенные сообщения и обогащенные звонки. Расширенные службы коммуникации обеспечивают взаимодействие между мобильными операторами и предлагают новые способы использования существующих ресурсов и возможностей для предоставления высококачественных и инновационных услуг коммуникации.
спонсируемая связь. Это позволяет пользователям использовать определенный тип контента без учета в лимите ежемесячного использования данных. Поставщик содержимого делает соглашение о компенсации мобильному оператору путем их непосредственной оплаты, выполнения сделки по обмену доходами или какой-либо другой деловой договоренности.
персональный хот-спот . Некоторые мобильные операторы взимает разные тарифы, когда подключение используется в качестве личной хот-точки. Вы можете использовать несколько контекстов PDP, чтобы различать их.
Мобильные широкополосные приложения
Мобильные широкополосные приложения UWP могут использовать несколько контекстов PDP для активации специального контекста PDP и указания правил маршрутизации трафика данных. Эти приложения могут создавать правила для определенных назначений или для всего трафика данных.
Когда мобильное широкополосное приложение должно обмениваться данными с сетью, оно проверяет доступные и подключенные сети. Если мобильное широкополосное приложение имеет специальное правило для любой из этих сетей, он использует API диспетчера подключений для открытия специального контекста PDP. Если это подключение выполнено успешно, контекст PDP предоставляет правила маршрутизации для этого подключения и передает данные с помощью сетевых API. Мобильное широкополосное приложение должно повторить это, если оно получает событие NetworkStatusChanged, чтобы узнать, изменились ли подключения и нужно ли открыть контекст PDP для нового подключения.
Сетевые API
Для отправки данных с помощью специального контекста PDP приложение Microsoft Store должно использовать другую логику на основе сетевых API, используемых для передачи данных.
API на основе HTTP
API на основе HTTP, например, XMLHTTPRequest, IXHR2, Windows.Web.Syndicationи Windows.Web.AtomPubи API на основе протокола HTTP Windows, например jQuery и Windows.Web.Http, не могут привязаться к конкретному интерфейсу. Для этих API Windows обрабатывает маршрутизацию данных в специальный контекст PDP с помощью политик. После активации специального контекста PDP приложение может указать правила маршрутизации на основе назначения и специального контекста PDP. Назначением может быть доменное имя или IP-адрес - например, video.fabrikam.com, .contoso.com или 123.23.34.333. После указания правил маршрутизации, если приложение использует любой из приведенных выше API HTTP для передачи данных, Windows отправит данные в специальный контекст PDP на основе правил маршрутизации. После завершения передачи данных приложение должно отключить специальный контекст PDP и удалить политику маршрута.
Заметка
API фоновой передачи и API-интерфейсы HTTP Client(C#) не могут использовать политику маршрутизации.
API на основе сокетов
API на основе сокетов, доступные в Windows.Networking.Sockets пространстве имен, таких как TCP, UDP и сокеты потоков, предоставляют механизм привязки к конкретному интерфейсу. Когда приложение использует API сокетов, оно должно привязаться к конкретному интерфейсу для маршрутизации данных в специальный контекст PDP. После активации специального контекста PDP API AcquireConnectionAsync предоставляет сведения об интерфейсе приложению. Эти сведения можно использовать для привязки к конкретному интерфейсу и началу передачи данных.
Информация о нескольких API контента PDP
Windows 8.1 и Windows 10 добавили следующие API для поддержки нескольких контекстов PDP:
CellularApnContext Этот класс содержит свойства, используемые для указания точки доступа в сети. Объект CellularApnContext передается с вызовом AcquireConnectionAsync для установления подключения к определенной точке доступа.
ConnectivityManager::AcquireConnectionAsync Данный API активирует новое подключение для указанного имени точки доступа (APN) или контекста PDP. Этот асинхронный метод позволяет приложению запрашивать подключение к определенному контексту APN или PDP с соответствующими сведениями о конфигурации. После активации специального APN он отображается как новый виртуальный интерфейс для Windows и приложений.
ConnectivityManager::AddHttpRoutePolicy Этот метод добавляет политику, используемую трафиком стека HTTP для маршрутизации данных в специальный контекст PDP. Приложение может определять политику на основе направлений, таких как доменное имя и IP-адрес, а также на основе специального профиля контекста PDP. Стек HTTP Windows использует политику для маршрутизации данных в специальный контекст PDP, как только приложение создало политику.
ConnectivityManager::RemoveHttpRoutePolicy Этот метод удаляет ранее добавленную политику маршрута HTTP.
В следующем коде показано, как использовать эти API для передачи данных на основе HTTP:
var connectivity = Windows.Networking.Connectivity;
var currentRoutePolicy = null;
var currentConnectionSession = null;
// Create PDP context/APN data
var apnContext = new connectivity.CellularApnContext();
apnContext.accessName = "myAPN.com";
apnContext.userName = "APNusername"
apnContext.password = "[PLACEHOLDER]";
apnContext.isCompressionEnabled = false;
apnContext.authenticationType = connectivity.CellularApnAuthenticationType.none;
// Request a connection to Windows
connectivity.ConnectivityManager.acquireConnectionAsync(apnContext).done(onConnectionSucceeded, onConnectionFailed);
// On successful Activation of APN, Windows returns a ConnectionSession object that encapsulates the new connection profile
function onConnectionSucceeded(result
{
// keep the connectionSession in scope
currentConnectionSession= result;
// create a route policy for the new connection
currentRoutePolicy = new connectivity.routePolicy(currentConnectionSession.ConnectionProfile, new hostName("video.mydomain.com"),Windows.Networking.DomainNameType.suffix);
// indicate the new route policy to the Http stack
connectivity.connectivityManager.addHttpRoutePolicy(currentRoutePolicy);
// Backend data interaction with appropriate HTTP APIs (IXHR, Open IFrame etc.)
// After completing the data transfer remove the Route Policy
connectivity.connectivityManager.removeHttpRoutePolicy(currentRoutePolicy);
currentRoutePolicy = null;
// Disconnect the PDP Context to free up resources
currentConnectionSession.close();
}
В следующем коде показано, как использовать эти API для передачи данных на основе сокета:
// Connect to Special PDP Context
var connectivity = Windows.Networking.Connectivity;
var currentRoutePolicy = null;
var currentConnectionSession = null;
// Create PDP Context/APN Data
var apnContext = new connectivity.CellularApnContext();
// Create PDP context/APN data
var apnContext = new connectivity.CellularApnContext();
apnContext.accessName = "myAPN.com";
apnContext.userName = "APNusername"
apnContext.password = "[PLACEHOLDER]";
apnContext.isCompressionEnabled = false;
apnContext.authenticationType = connectivity.CellularApnAuthenticationType.none;
// Request the connection to Windows
connectivity.ConnectivityManager.acquireConnectionAsync(apnContext).done(onConnectionSucceeded, onConnectionFailed);
// On successful activation of an APN, Windows returns a ConnectionSession object that encapsulates the new connection profile
function onConnectionSucceeded(result) {
// keep the connectionSession in scope
currentConnectionSession = result;
var socket = new Windows.Networking.Sockets.StreamSocket();
var hostName = new Windows.Networking.HostName("www.contoso.com");
var portNumber = "1234";
// Bind the socket to new Special PDP Context Connection
socket.connectAsync(hostName, portNumber, SocketProtectionLevel.PlainSocket, currentConnectionSession.connectionProfile.networkAdapter).done(onSocketConnectionSucceeded, onSocketConnectionFailed);
function onSocketConnectionSucceeded(result)
{
// Start transferring data using socket APIs
}
// Closing the sockets
socket.close();
// Disconnect the PDP Context to free up resources
currentConnectionSession.close();
Приложение должно правильно обрабатывать событие NetworkStatusChanged для успешного управления любыми изменениями сети в рамках специального подключения в контексте PDP.
Сценарий: мобильное широкополосное приложение premium предоставляет бесплатный доступ к данным с помощью специального APN
В этом сценарии мобильное широкополосное приложение предоставляет бесплатный доступ к данным с помощью специального контекста PDP. Приложение либо использует подключенную сеть, например сеть Wi-Fi, если она свободна или использует специальный APN при подключении к определенной сети операторов. В следующем примере кода показано, как приложение может использовать несколько API контекста PDP для передачи данных в специальном контексте PDP, если бесплатные сети не подключены.
// Reference the namespace
var connectivity = Windows.Networking.Connectivity;
// Current route policy
var currentRoutePolicy = null;
var currentConnectionSession = null;
function onLoad()
{
// Register for network status change
connectivity.networkInformation.addEventListener("networkstatuschanged", OnNetworkStatusChange);
// Process the current status
handleNetworkChange();
}
// Handle newtork status changes
function onNetworkStatusChange()
{
HandleNetworkChange();
}
// On network status change:
// if there is no connectionPolicy, evaluate a new one
// if there is a current connectionPolicy ==> verify it is still valid
// evaluate a new one if the current connectionPolicy is not valid
function handleNetworkChange()
{
if (isCurrentPolicyStillValid())
{
//the current policy is still valid.
return;
}
// No policy or current policy is not good anymore
// cleanup any previous configuration
if (currentRoutePolicy)
{
connectivity.ConnectivityManager.removeHttpRoutePolicy(currentRoutePolicy);
currentRoutePolicy = null;
}
// if a different APN was connected, disconnect it to free up resources
if (connectionConnectionSession != null)
{
connectionConnectionSession.close();
connectionConnectionSession = null;
}
// evaluate connection policy
startEvaluateConnectionPolicy();
}
// evaluate if the current connectionPolicy is still valid
function isCurrentPolicyStillValid()
{
if (null != currentRoutePolicy)
{
// a policy is currently in place, let's verify if it is still valid
var currentProfile = currentRoutePolicy.connectionProfile();
if (NetworkConnectivityLevel.none != currentProfile.GetNetworkConnectivityLevel())
{
// current policy is still good. bail out
return true;
}
}
return false;
}
// starts the evaluation of a new connection policy
function startEvaluateConnectionPolicy()
{
// first try to get a free network if it is available
var queryFilter = new connectivity.connectionProfileFilter();
queryFilter.networkCostType = connectivity.networkCostType.unrestricted;
queryFilter.isConnected = true;
connectivity.networkInformation.findConnectionProfilesAsync(queryFilter).done(onSuccess, onFailure);
}
// Succesfully retrieved at least one free connection profile
function onSuccess(results)
{
if(results.count > 0)
{
// Enfore the route to the http stack
enforceHttpRoutePolicy(results[0]);
// Backend data interaction with appropriate APIs(Open IFrame etc.)
}
else
{
onFailure();
}
}
// there are no free networks available at this time
function onFailure()
{
// create a request to connect a specific APN on the network
// no free network available, connect
var apnContext = new connectivity.CellularApnContext();
apnContext.accessPointName = "myAPN.com";
apnContext.userName = "APNusername"
apnContext.password = "[PLACEHOLDER]";
apnContext.isCompressionEnabled = false;
apnContext.authenticationType = connectivity.CellularApnAuthenticationType.none;
//
// request the connection to Windows
connectivity.connectivityManager.acquireConnectionAsync(apnContext).done(onConnectionSucceeded, onConnectionFailed);
}
// on success Windows returns a ConnectionSession object that encapsulates the new connection profile
function onConnectionSucceeded(result)
{
// keep the connectionSession in scope
currentConnectionSession= result;
// create a route policy for the new connection
enforceHttpRoutePolicy(currentConnectionSession.ConnectionProfile,new hostName("video.mydomain.com"),Windows.Networking.DomainNameType.suffix);
// Backend data interaction with appropriate APIs(Open IFrame etc.)
}
// Windows was not able to connect the specified APN
function onConnectionFailed()
{
// display error message and just wait for Network Status Change event to try again
}
// utility function to enforce a route policy
function enforceHttpRoutePolicy(connectionProfile,targetSuffix)
{
// Keep the route request global so we can close it later
currentRoutePolicy= new connectivity.routePolicy(connectionProfile, targetSuffix);
// Indicate the new route policy to the Http stack
connectivity.connectivityManager.addHttpRoutePolicy(currentRoutePolicy);
}
// cleanup on shutdown
function onShutdown()
{
// Remove the route policy from HttpStack
connectivity.connectivityManager.removeHttpRoutePolicy(currentRoutePolicy);
currentRoutePolicy = null;
// If a different APN was connected, disconnect it to free up resources
if(currentConnectionSession!= null)
{
currentConnectionSession.close();
}
}
Сценарий: мобильное широкополосное приложение требует специального контекста PDP для приобретения подписки и настройки.
В этом сценарии приложение для мобильной широкополосной связи требует особого контекста PDP для покупки и настройки подписки. Это приложение активирует специальный контекст PDP независимо от подключенной сети.
var connectivity = Windows.Networking.Connectivity;
var currentRoutePolicy = null;
var currentConnectionSession = null;
function onLoad()
{
// Register for network status change
connectivity.networkInformation.addEventListener("networkstatuschanged", OnNetworkStatusChange);
// Process the current status
handleNetworkChange();
}
function onNetworkStatusChange()
{
HandleNetworkChange();
}
// Create the PDP Context/APN Data
var apnContext = new connectivity.CellularApnContext();
apnContext.providerId = "23545";
apnContext.accessPointName = "myAPN.com";
apnContext.userName = "APNusername"
apnContext.password = "[PLACEHOLDER]";
apnContext.isCompressionEnabled = false;
apnContext.authenticationType = connectivity.CellularApnAuthenticationType.none;
// Request the connection to Windows
connectivity.connectivityManager.acquireConnectionAsync(apnContext).done(onConnectionSucceeded, onConnectionFailed);
// On successful connection to PDP Context, Windows returns a ConnectionSession object that incapsulate the new connection profile
function onConnectionSucceeded(result)
{
// keep the connectionSession in scope
currentConnectionSession= result;
// create a route policy for the new connection
currentRoutePolicy = new connectivity.routePolicy(currentConnectionSession.ConnectionProfile, new hostName("video.mydomain.com"),Windows.Networking.DomainNameType.suffix);
// indicate the new route policy to the Http stack
connectivity.connectivityManager.addHttpRoutePolicy(currentRoutePolicy);
// Backend data interaction with appropriate APIs(Open IFrame etc.)
// After completing the data transfer remove the Route Policy
connectivity.connectivityManager.removeHttpRoutePolicy(currentRoutePolicy);
currentRoutePolicy = null;
// Disconnect the PDP Context to free up resources
currentConnectionSession.close();
}
function handleNetworkChange()
{
// App behavior to handle network
var currentProfile = currentRoutePolicy.connectionProfile();
if (NetworkConnectivityLevel.none != currentProfile.GetNetworkConnectivityLevel())
{
// The special PDP Context is disconnected, app should handle this. It can request another connection to special PDP Context or it can show error to the user.
}
}
Рекомендации по мобильным широкополосным приложениям
Мобильные широкополосные приложения могут получать информацию об использовании локальных данных для каждого контекста PDP и влиять на Windows посредством политик для особых контекстов PDP.
Использование локальных данных
В Windows 8 вы предоставляете постоянную связь на основе подписки с пользователями через мобильное широкополосное приложение, которое имеет возможность показывать текущее использование данных. Пользователи могут просматривать текущее использование данных и понимать их цикл выставления счетов или дату окончания сеанса, чтобы принять соответствующее решение. Чтобы уменьшить нагрузку на сеть как можно больше, следует периодически проверять использование данных в сети. Windows предоставляет локальный API для использования данных, который позволяет отображать пользователю текущее использование данных.
Специальный контекст PDP предоставляет возможность различать расходы на доступ к данным определенным приложениям или службам. Каждый из разных контекстов PDP рассматривается как отдельный профиль для счетчиков использования локальных данных. Мобильное широкополосное приложение может запрашивать объем использованных локальных данных для каждого PDP-контекста за определенный период времени, аналогично тому, как PDP-контекст интернета работал в Windows 8. Эти сведения можно использовать для отображения соответствующих возможностей использования данных пользователю.
В следующем примере кода показано, как использовать сетевые API для чтения локальных данных для всех контекстов PDP:
// Get the network account ID.
IReadOnlyList<string> networkAccIds = Windows.Networking.NetworkOperators.MobileBroadbandAccount.AvailableNetworkAccountIds;
if (networkAccIds.Count == 0)
{
rootPage.NotifyUser("No network account ID found", NotifyType.ErrorMessage);
return;
}
// For the sake of simplicity, assume we want to use the first account.
// Refer to the MobileBroadbandAccount API's how to select a specific account ID.
string networkAccountId = networkAccIds[0];
// Create mobile broadband object for specified network account ID
var mobileBroadbandAccount = Windows.Networking.NetworkOperators.MobileBroadbandAccount.CreateFromNetworkAccountId(networkAccountId);
// Get all connection profiles associated with this network account ID
var connectionProfiles = mobileBroadbandAccount.GetConnectionProfiles();
// Collect local usages for last one hour
DateTime endTime = DateTime.Now;
TimeSpan timeDiff = TimeSpan.FromHours(1);
DateTime startTime = endTime.Subtract(timeDiff);
string message = string.Empty;
foreach (var connectionProfile in connectionProfiles)
{
// Display local usages for each connection profiles
DataUsage localUsage = connectionProfile.GetLocalUsage(startTime, endTime);
message += "Connection Profile Name: " + connectionProfile.ProfileName + "\n\n";
message += "Local Data Usage from " + startTime.ToString() + " to " + endTime.ToString() + ":\n";
message += " Bytes Sent : " + localUsage.BytesSent + "\n";
message += " Bytes Received : " + localUsage.BytesReceived + "\n\n";
}
// Print the message string
Политики
Некоторые операторы указали, что специальные контексты PDP имеют ограниченную пропускную способность. Приложения, которые активируют специальный контекст PDP, но не имеют доступа к использованию специального контекста PDP, могут создать атаку типа "отказ в обслуживании". Следует ограничить использование специальных APN определенным приложениям с бизнес-отношениями. Вы можете предоставить Windows список приложений UWP со специальными именами APN. Windows будет использовать эти сведения для ограничения доступа к специальным APN. Если вы не предоставляете список, Windows предполагает, что специальный контекст PDP открыт для всех приложений.
Заметка
Это просто, чтобы избежать дополнительного трафика в специальных контекстах PDP. Вы не можете полагаться на это как механизм безопасности для ограничения приложений специальными контекстами PDP. Если вы хотите ограничить доступ к специальным контекстам PDP, необходимо реализовать некоторые механизмы проверки подлинности или безопасности в сети. Например, можно использовать фильтр, разрешающий только определенные IP-адреса для определенного контекста PDP.
Некоторые мобильные сети не поддерживают несколько контекстов PDP. Вы можете определить, поддерживает ли ваша сеть несколько контекстов PDP или нет. Если сеть не поддерживает несколько контекстов PDP, Windows не должна разрешать приложениям создавать подключения по запросу на специальные APN. По умолчанию Windows предполагает, что поддерживается несколько контекстов PDP.
В следующем примере XML-файла показано, как использовать метаданные подготовки Windows для предоставления списка разрешенных приложений для специальных контекстов PDP:
<?xml version="1.0" encoding="utf-8"?>
<CarrierProvisioning xmlns="http://www.microsoft.com/networking/CarrierControl/v1">
<Global>
<!-- Adjust the Carrier ID to fit your own ID. Refer to the documentation about Carrier ID's. -->
<CarrierId>{11111111-1111-1111-1111-111111111111}</CarrierId>
<!-- Adjust the Susbscriber ID. Refer to the documentation about Subscriber ID's. -->
<SubscriberId>1234567890</SubscriberId>
</Global>
<Extensions>
<Extensions_v2 xmlns="http://www.microsoft.com/networking/CarrierControl/v2">
<AdditionalPDPContexts>
<MultiplePDPContextPolicies MultiplePDPContextSupport="true">
<PDPContextPolicy>
<!-- Adjust the profile name -->
<Name>Contoso1</Name>
<Context>
<!-- Adjust the access string to your APN. -->
<AccessString>Contoso.Contoso1</AccessString>
<!-- Adjust the UserLogonCred to fit your UserLogonCred. Refer to the documentation about UserLogonCred's. -->
<UserLogonCred>
<UserName>user1</UserName>
<Password>[PLACEHOLDER]</Password>
</UserLogonCred>
</Context>
<AppIDList>
<!-- Adjust the AppId to your AppId -->
<AppID>Contoso.Sample1.CS_dsarewaj</AppID>
<AppID>Contoso.Sample2.CPP_dsarewaj</AppID>
</AppIDList>
</PDPContextPolicy>
<PDPContextPolicy>
<!-- Adjust the profile name -->
<Name>Contoso2</Name>
<Context>
<!-- Adjust the access string to your APN. -->
<AccessString>Contoso.Contoso2</AccessString>
<!-- Adjust the UserLogonCred to fit your UserLogonCred. Refer to the documentation about UserLogonCred. -->
<UserLogonCred>
<UserName>user2</UserName>
<Password>[PLACEHOLDER]</Password>
</UserLogonCred>
</Context>
<AppIDList>
<!-- Adjust the AppId to your AppId -->
<AppID>Contoso.Sample3.CS_dsarewaj</AppID>
<AppID>Contoso.Sample4.CPP_dsarewaj</AppID>
</AppIDList>
</PDPContextPolicy>
</MultiplePDPContextPolicies>
</AdditionalPDPContexts>
</Extensions_v2>
</Extensions>
</CarrierProvisioning>
Потоковая передача аудио и видео
Приложения потоковой передачи звука могут воспроизводить звуковые или видеопотоки с помощью специального контекста PDP. Как и в API HTTP, приложение может использовать следующую логику для воспроизведения звука или видео с помощью тега <аудио> или <видео>.
Платформы видео можно использовать на основе API WinInet.
InstantGo
InstantGo обеспечивает мгновенное включение и выключение, которое пользователи ожидают от своих телефонов. И так же, как на телефоне, InstantGo позволяет системе оставаться свежей, актуальной и доступной всякий раз, когда доступна подходящая сеть. InstantGo на платформах компьютеров с низкой мощностью должен соответствовать определенным требованиям сертификации Windows.
В InstantGo поддерживаются следующие сценарии:
Обновление динамических плиток со свежим содержанием
Получение электронной почты
Скачивание файлов или их отправка на веб-сайт
Общий доступ к содержимому, например фотографиям на веб-сайте
Получение мгновенных сообщений
Получение вызовов VoIP
Взаимодействие в режиме реального времени
Воспроизведение фонового звука и музыки
Дополнительные сведения об InstantGo см. в разделе Введение в InstantGo.
Мобильное широкополосное приложение может использовать специальный контекст PDP для включения некоторых из этих сценариев InstantGo. Для повторного подключения к специальному контексту PDP необходимо использовать следующую логику, если он отключен из-за отсутствия покрытия. Когда устройство входит в состояние подключенной резервной мощности, Windows отключит все подключения к специальным контекстам PDP через 10 минут, и приложение должно снова запросить подключение.
Потоковая передача звука в фоновом режиме
Приложения потоковой передачи звука могут воспроизводиться в фоновом режиме и в состоянии подключенной резервной мощности с помощью специального контекста PDP. Дополнительные сведения о том, как воспроизводить звук в фоновом режиме, см. Как воспроизводить звук в фоновом режиме.
Приложения связи в режиме реального времени
Приложения связи в режиме реального времени, такие как VoIP или приложения чата, могут получать триггер пробуждения в специальном контексте PDP. Триггер пробуждения позволяет приложению запускаться во все времена, в том числе когда система находится в состоянии подключенного резервного питания.
Чтобы включить этот сценарий, мобильное широкополосное устройство должно поддерживать фильтры пробуждения в специальном контексте PDP, как указано в спецификации модели мобильного широкополосного интерфейса (MBIM).
Мобильные широкополосные устройства
Для поддержки нескольких контекстов PDP встроенное ПО мобильного широкополосного устройства должно поддерживать несколько контекстов PDP, как определено в спецификации MBIM. Он также должен пройти любые тесты комплекта сертификации оборудования Windows, специфичные для нескольких контекстов PDP.
Так как эта функция операторозависимая, она является необязательной для мобильных широкополосных устройств. Если вам нужна эта функция, необходимо добавить несколько функций контекста PDP в требованиях к оператору, выполнив следующие действия.
Встроенное ПО устройства должно поддерживать несколько потоков IP-данных, как описано в разделе 10.5.12.1 спецификации MBIM. Это включает поддержку всех механизмов управления реализации идентификаторов CID и IP-потоков данных для полноценной поддержки нескольких контекстов PDP.
Встроенное ПО устройства должно поддерживать несколько контекстов PDP двойного носителя (IPv4 & IPv6) для использования в Windows.
Это включает одну единицу для подключения к Интернету и дополнительные контексты PDP для приложений мобильной широкополосной связи в соответствии с вашими требованиями.
Для этого не требуются контексты PDP, управляемые устройством, которые встроенное ПО может использовать для SMS и других административных контекстов.
Встроенное ПО устройства должно иметь возможность грамотно воспользоваться запросом операционной системы хоста для контекста PDP, уже управляемого устройством внутри своего встроенного ПО.
Прошивка устройства должна продолжать абстрагировать контексты PDP для SMS и направлять их через SMS CID независимо от используемого носителя.