Desarrollo de aplicaciones con varios contextos PDP
Un contexto de Protocolo de datos de paquetes (PDP) ofrece una conexión de datos de paquetes a través de la cual un dispositivo y la red móvil pueden intercambiar paquetes IP. Según los estándares 3GPP, un dispositivo puede tener más de un contexto PDP activado a la vez. En Windows 8.1 y Windows 10, se admiten varios contextos PDP y permite a las aplicaciones comunicarse a través de contextos PDP especiales a las redes móviles junto con el contexto PDP de Internet admitido en Windows 8. Puede usar esta característica para crear experiencias diferenciadas y servicios innovadores en Windows. También puede asociarse con desarrolladores de aplicaciones para desarrollar experiencias voIP de gran calidad y streaming de vídeo para sus clientes.
Esta es una ilustración que muestra cómo funciona el contexto de varios PDP en Windows 8.1 y Windows 10:
Use las secciones siguientes de este tema para obtener más información sobre varios contextos PDP:
Escenarios principales
Puede usar varios contextos PDP para habilitar los servicios Premium.
Facturación diferenciada : puede variar los datos o las restricciones de facturación mediante varios contextos PDP. Por ejemplo, Contoso es un operador de telefonía móvil que desarrolló una aplicación de copia de seguridad de datos para sus clientes. Como operador de telefonía móvil, Contoso podría crear varios contextos PDP y permitir que los suscriptores premium usen la aplicación de forma gratuita. Todos los demás suscriptores se cobran por separado para usarlo.
Rich Communication Services : una iniciativa global creada por la Asociación GSM para proporcionar servicios de comunicación enriquecidos, como un teléfono mejorado, mensajería mejorada y llamadas enriquecidas. Rich Communication Services proporciona interoperabilidad entre operadores móviles y ofrece nuevas formas de usar recursos y funcionalidades existentes para ofrecer servicios de comunicación de alta calidad e innovadores.
Conectividad patrocinada : esto permite a los usuarios un tipo específico de contenido sin que se vaya a su uso mensual de datos. El proveedor de contenido hace un acuerdo para reembolsar al operador de telefonía móvil pagando directamente, haciendo una oferta de distribución de ingresos o algún otro acuerdo comercial.
Punto de acceso personal : algunos operadores móviles cobran tarifas diferentes cuando la conexión se usa como punto de acceso personal. Puede usar varios contextos PDP para diferenciar entre los dos.
Aplicaciones de banda ancha móvil
Las aplicaciones de banda ancha móvil para UWP pueden aprovechar varios contextos PDP para activar un contexto PDP especial y especificar reglas para enrutar el tráfico de datos. Estas aplicaciones pueden crear reglas para destinos específicos o para todo el tráfico de datos.
Cuando la aplicación de banda ancha móvil necesita intercambiar datos con la red, comprueba las redes disponibles y conectadas. Si la aplicación de banda ancha móvil tiene una regla especial para cualquiera de estas redes, usa la API de Administrador de conexiones para abrir un contexto PDP especial. Si esta conexión se realiza correctamente, el contexto de PDP proporciona reglas de enrutamiento para esta conexión y transfiere los datos mediante las API de red. La aplicación de banda ancha móvil debe repetir esto si recibe el evento NetworkStatusChanged para ver si alguna conexión ha cambiado y si necesita abrir un contexto PDP para la nueva conexión.
API de redes
Para enviar datos mediante un contexto PDP especial, la aplicación de Microsoft Store debe usar una lógica diferente basada en las API de red que usa para transferir datos.
API basadas en HTTP
Las API basadas en HTTP, como XMLHTTPRequest, IXHR2, Windows.Web.Syndication y Windows.Web.AtomPub, y las API basadas en el protocolo HTTP de Windows, como JQuery y Windows.Web.Http, no tienen la capacidad de enlazar a una interfaz específica. Para estas API, Windows controla el enrutamiento de datos a un contexto PDP especial mediante directivas. Una vez activado el contexto de PDP especial, la aplicación puede especificar reglas de enrutamiento basadas en el destino y el contexto PDP especial. El destino puede ser el nombre de dominio o la dirección IP, como video.fabrikam.com, .contoso.com o 123.23.34.333. Después de especificar las reglas de enrutamiento, si la aplicación usa cualquiera de las API HTTP anteriores para transferir los datos, Windows enviará los datos al contexto PDP especial en función de las reglas de enrutamiento. Una vez que la aplicación haya terminado de transferir datos, debe desconectar el contexto de PDP especial y quitar la directiva de ruta.
Nota
Las API de transferencia en segundo plano y las API de cliente HTTP (C#) no pueden usar una directiva de ruta.
API basadas en sockets
Las API basadas en sockets disponibles en el espacio de nombres Windows.Networking.Sockets , como TCP, UDP y sockets de flujo, proporcionan un mecanismo para enlazar a una interfaz específica. Cuando una aplicación usa las API de socket, debe enlazarse a una interfaz específica para enrutar los datos al contexto PDP especial. Una vez activado el contexto PDP especial, la API AcquireConnectionAsync proporciona la información de interfaz a la aplicación. Puede usar esta información para enlazar a una interfaz específica y empezar a transferir los datos.
Información de api de contenido de PDP múltiple
Windows 8.1 y Windows 10 han agregado las siguientes API para admitir varios contextos PDP:
CellularApnContext Esta clase contiene propiedades usadas para especificar un punto de acceso en una red. Un objeto CellularApnContext se pasa con una llamada AcquireConnectionAsync para establecer una conexión a un punto de acceso específico.
ConnectivityManager::AcquireConnectionAsync Esta API activa una nueva conexión para un nombre de punto de acceso (APN) o un contexto PDP especificados. Este método asincrónico permite a una aplicación solicitar una conexión a un contexto de APN o PDP específico con la información de configuración adecuada. Después de activar el APN especial, aparece como una nueva interfaz virtual para Windows y las aplicaciones.
ConnectivityManager::AddHttpRoutePolicy Este método agrega una directiva que usará el tráfico de pila HTTP para enrutar los datos a un contexto PDP especial. La aplicación puede especificar la directiva en función de los destinos, como el nombre de dominio y la dirección IP, y el perfil de contexto PDP especial. La pila HTTP de Windows usa la directiva para enrutar los datos al contexto PDP especial una vez que la aplicación ha creado la directiva.
ConnectivityManager::RemoveHttpRoutePolicy Este método quita una directiva de ruta HTTP agregada anteriormente.
En el código siguiente se muestra cómo usar estas API para una transferencia de datos basada en 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();
}
En el código siguiente se muestra cómo usar estas API para una transferencia de datos basada en sockets:
// 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();
La aplicación debe controlar el evento NetworkStatusChanged para controlar las transiciones de red en la conexión de contexto PDP especial.
Escenario: La aplicación premium de banda ancha móvil proporciona acceso gratuito a los datos mediante APN especial
En este escenario, la aplicación de banda ancha móvil proporciona acceso gratuito a los datos mediante un contexto PDP especial. La aplicación usa una red conectada, como una red Wi-Fi, si es gratuita o usa un APN especial si está conectado a una red de operador específica. En el código de ejemplo siguiente se muestra cómo una aplicación puede usar las api de contexto de PDP múltiples para transferir datos en un contexto PDP especial si no hay ninguna red libre conectada.
// 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();
}
}
Escenario: La aplicación de banda ancha móvil requiere un contexto de PDP especial para la compra y el aprovisionamiento de suscripciones
En este escenario, la aplicación de banda ancha móvil requiere un contexto PDP especial para la compra y el aprovisionamiento de suscripciones. Esta aplicación activará un contexto PDP especial independientemente de la red conectada.
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.
}
}
Consideraciones sobre las aplicaciones de banda ancha móvil
Las aplicaciones de banda ancha móvil pueden obtener información de uso de datos locales para cada contexto de PDP e influir en Windows con directivas para contextos PDP especiales.
Uso de datos locales
En Windows 8, proporciona una relación continua basada en suscripciones con los usuarios a través de la aplicación de banda ancha móvil que tiene la capacidad de mostrar el uso actual de los datos. Los usuarios pueden ver su uso de datos actual y comprender su ciclo de facturación o la fecha de finalización de la sesión para tomar una decisión adecuada. Para reducir la carga en la red tanto como sea posible, debe comprobar el uso de datos con la red periódicamente. Windows proporciona una API de uso de datos local que puede usar para combinar con el uso de datos para mostrar el uso de datos actual al usuario.
Un contexto PDP especial proporciona la capacidad de diferenciar los cargos de acceso a datos a determinadas aplicaciones o servicios. Cada contexto PDP diferente se trata como un perfil diferente para los contadores de uso de datos locales. La aplicación de banda ancha móvil puede consultar el uso de datos local para cada contexto de PDP durante una duración determinada, de forma similar a cómo funcionó el contexto PDP de Internet en Windows 8. Puede usar esta información para mostrar la experiencia de uso de datos adecuada al usuario.
En el código de ejemplo siguiente se muestra cómo puede usar las API de red para leer el uso de datos locales para todos los contextos de 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
Directivas
Algunos operadores han indicado que los contextos PDP especiales tienen un ancho de banda limitado. Las aplicaciones que activan el contexto PDP especial, pero no tienen acceso para usar el contexto PDP especial pueden crear un ataque por denegación de servicio. Debe restringir el uso de APN especiales a aplicaciones específicas con una relación empresarial. Puedes proporcionar a Windows una lista de aplicaciones para UWP con nombres de APN especiales. Windows usará esa información para limitar el acceso a APN especiales. Si no proporciona una lista, Windows asume que el contexto de PDP especial está abierto para todas las aplicaciones.
Nota
Esto es solo para evitar tráfico adicional en contextos PDP especiales. No puede basarse en esto como un mecanismo de seguridad para restringir las aplicaciones a contextos PDP especiales. Si desea restringir el acceso a contextos PDP especiales, debe implementar algún mecanismo de autenticación o seguridad en la red. Por ejemplo, podría usar un filtro que permita solo determinadas direcciones IP para un contexto PDP específico.
Algunas redes móviles no admiten varios contextos PDP. Puede aprovisionar si la red admite varios contextos PDP o no. Si la red no admite varios contextos PDP, Windows no debe permitir que las aplicaciones creen conexiones a petición en APN especiales. De forma predeterminada, Windows supone que admite varios contextos PDP.
En el siguiente archivo XML de ejemplo se muestra cómo usar metadatos de aprovisionamiento de Windows para proporcionar una lista de aplicaciones permitidas para contextos PDP especiales:
<?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>
Streaming de audio y vídeo
Las aplicaciones de streaming de audio pueden reproducir secuencias de audio o vídeo mediante un contexto PDP especial. De forma similar a las API HTTP, la aplicación puede usar la siguiente lógica para reproducir audio o vídeo mediante la <etiqueta de audio> o <vídeo> .
Puede usar marcos de vídeo basados en las API de WinInet .
InstantGo
InstantGo proporciona una experiencia instantánea de usuario activada e instantánea que los usuarios esperan en su teléfono. Y al igual que en el teléfono, InstantGo permite que el sistema permanezca actualizado, actualizado y accesible siempre que haya disponible una red adecuada. InstantGo en plataformas de equipos de bajo consumo debe cumplir requisitos específicos de certificación de Windows.
Los escenarios siguientes se admiten en InstantGo:
Actualización de iconos dinámicos con contenido nuevo
Recepción de correo electrónico
Descargar archivos de un sitio web o cargarlos en él
Compartir contenido, como fotos en un sitio web
Recepción de mensajes instantáneos
Recepción de llamadas VoIP
Comunicación en tiempo real
Reproducir audio y música de fondo
Para obtener más información sobre InstantGo, consulta Introducción a InstantGo.
La aplicación de banda ancha móvil puede usar un contexto PDP especial para habilitar algunos de estos escenarios de InstantGo. Debe usar la siguiente lógica para volver a conectarse al contexto PDP especial si está desconectado porque está fuera de cobertura. Cuando el dispositivo entra en estado de alimentación conectado en espera, Windows desconectará todas las conexiones a contextos PDP especiales después de 10 minutos y la aplicación tendrá que solicitar la conexión de nuevo.
Streaming de audio en segundo plano
Las aplicaciones de streaming de audio pueden audio en segundo plano y en el estado de alimentación De espera conectado mediante un contexto PDP especial. Para obtener más información sobre cómo reproducir audio en segundo plano, consulta Cómo reproducir audio en segundo plano.
Aplicaciones de comunicación en tiempo real
Las aplicaciones de comunicación en tiempo real, como VoIP o las aplicaciones de chat, pueden recibir un desencadenador de reactivación en un contexto PDP especial. El desencadenador de reactivación permite que la aplicación se desencadene en todo momento, incluso cuando el sistema está en estado de alimentación en espera conectada.
Para habilitar este escenario, el dispositivo de banda ancha móvil debe admitir filtros de reactivación en un contexto PDP especial, como se indica en la especificación modelo de interfaz de banda ancha móvil (MBIM).
Dispositivos de banda ancha móvil
Para admitir varios contextos PDP, el firmware del dispositivo de banda ancha móvil debe admitir varios contextos PDP, tal como se define en la especificación MBIM. También debe pasar las pruebas del Kit de certificación de hardware de Windows específicas de varios contextos PDP.
Dado que esta característica es específica del operador, es opcional para los dispositivos de banda ancha móvil. Si necesita esta característica, debe agregar varias funcionalidades de contexto PDP en los requisitos del operador con lo siguiente:
El firmware del dispositivo debe admitir varios flujos de datos IP, como se detalla en la sección 10.5.12.1 de la especificación MBIM. Esto incluye la compatibilidad con toda la implementación de control de ciDs y flujos de datos IP para la compatibilidad completa con varios contextos PDP.
El firmware del dispositivo debe admitir varios contextos PDP de portador dual (IPv4 & IPv6) para su uso por Parte de Windows.
Esto incluye 1 para la conectividad a Internet y contextos PDP adicionales para aplicaciones de banda ancha móvil, según sus requisitos.
Esto no requiere contextos PDP administrados por el dispositivo que el firmware puede usar para SMS y otros contextos administrativos.
El firmware del dispositivo debe poder aprovechar correctamente una solicitud del sistema operativo host para un contexto PDP que ya está administrado internamente por el dispositivo en su firmware.
El firmware del dispositivo debe seguir abstraiendo contextos PDP de SMS y enrutarlos a través de los CID de SMS, independientemente del portador usado debajo.