Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kontekst protokołu PDP (Packet Data Protocol) oferuje połączenie danych pakietów, za pośrednictwem którego urządzenie i sieć mobilna mogą wymieniać pakiety IP. Zgodnie ze standardami 3GPP, urządzenie może mieć aktywowany więcej niż jeden kontekst PDP jednocześnie. W systemach Windows 8.1 i Windows 10 obsługiwane są wiele kontekstów PDP, co umożliwia aplikacjom komunikację za pomocą specjalnych kontekstów PDP z sieciami mobilnymi, a także korzystanie z kontekstu PDP internetu, który był obsługiwany w systemie Windows 8. Ta funkcja umożliwia tworzenie zróżnicowanych środowisk i innowacyjnych usług w systemie Windows. Możesz również współpracować z deweloperami aplikacji, aby opracować doskonałe środowisko voIP i streaming wideo dla swoich klientów.
Oto rysunek pokazujący, jak działa wiele kontekstów PDP w systemach Windows 8.1 i Windows 10:
Skorzystaj z poniższych sekcji w tym temacie, aby dowiedzieć się więcej o wielu kontekstach PDP:
Kluczowe scenariusze
Aby włączyć usługi Premium, można użyć wielu kontekstów PDP.
Zróżnicowane rozliczenia — możesz różnicować dane lub ograniczenia dotyczące rozliczeń przy użyciu wielu kontekstów PDP. Na przykład firma Contoso jest operatorem sieci komórkowej, który opracował aplikację do tworzenia kopii zapasowych danych dla swoich klientów. Jako operator komórkowy firma Contoso może utworzyć wiele kontekstów PDP i pozwolić subskrybentom premium bezpłatnie korzystać z aplikacji. Wszyscy inni subskrybenci ponoszą dodatkowe opłaty za korzystanie z niego.
Rich Communication Services – globalna inicjatywa stworzona przez Stowarzyszenie GSM w celu świadczenia bogatych usług komunikacyjnych, takich jak ulepszona książka telefoniczna, ulepszona obsługa wiadomości i wzbogacone połączenia. Rich Communication Services zapewniają współdziałanie między operatorami sieci komórkowej i oferują nowe sposoby korzystania z istniejących zasobów i możliwości w celu dostarczania wysokiej jakości i innowacyjnych usług komunikacyjnych.
pl-PL: Sponsorowane Połączenie — umożliwia to użytkownikom korzystanie z określonego typu zawartości bez obciążania miesięcznego limitu danych. Dostawca treści zawiera porozumienie, aby zwrócić operatorowi sieci komórkowej, płacąc jej bezpośrednio, uczestnicząc w podziale przychodów lub poprzez inną formę umowy biznesowej.
Osobisty hotspot — niektórzy operatorzy sieci komórkowej pobierają różne stawki, gdy połączenie jest używane jako osobisty hotspot. Aby rozróżnić te dwa konteksty, można użyć wielu kontekstów PDP.
Mobilne aplikacje szerokopasmowe
Mobilne aplikacje szerokopasmowe platformy UWP mogą korzystać z wielu kontekstów PDP w celu aktywowania specjalnego kontekstu PDP i określania reguł kierowania ruchu danych. Te aplikacje mogą tworzyć reguły dla określonych miejsc docelowych lub dla całego ruchu danych.
Gdy mobilna aplikacja szerokopasmowa musi wymieniać dane z siecią, sprawdza dostępne i połączone sieci. Jeśli mobilna aplikacja szerokopasmowa ma specjalną regułę dla dowolnej z tych sieci, używa interfejsu API Menedżera połączeń do otwierania specjalnego kontekstu PDP. Jeśli to połączenie powiedzie się, kontekst PDP udostępnia reguły routingu dla tego połączenia i przesyła dane przy użyciu interfejsów API sieci. Aplikacja sieci szerokopasmowych dla urządzeń przenośnych powinna powtórzyć tę czynność, jeśli otrzyma zdarzenie NetworkStatusChanged, aby sprawdzić, czy jakiekolwiek połączenia uległy zmianie i czy należy otworzyć kontekst PDP dla nowego połączenia.
Interfejsy API sieci
Aby wysyłać dane przy użyciu specjalnego kontekstu PDP, aplikacja ze Sklepu Microsoft musi zastosować inną logikę, opartą na interfejsach API sieciowych służących do przesyłania danych.
Interfejsy API oparte na protokole HTTP
Interfejsy API oparte na protokole HTTP, takich jak XMLHTTPRequest, IXHR2, Windows.Web.Syndicationi Windows.Web.AtomPubi interfejsy API oparte na protokole HTTP systemu Windows, takich jak jQuery i Windows.Web.Http, nie mają możliwości powiązania z określonym interfejsem. System Windows obsługuje trasowanie danych do specjalnego kontekstu PDP przy użyciu zasad dla tych interfejsów API. Po aktywowaniu specjalnego kontekstu PDP aplikacja może określić reguły routingu na podstawie miejsca docelowego i specjalnego kontekstu PDP. Miejscem docelowym może być nazwa domeny lub adres IP, taki jak video.fabrikam.com, .contoso.com lub 123.23.34.333. Po określeniu reguł routingu, jeśli aplikacja używa dowolnego z powyższych interfejsów API HTTP do transferu danych, system Windows wyśle dane do specjalnego kontekstu PDP na podstawie reguł routingu. Po zakończeniu przesyłania danych przez aplikację należy odłączyć specjalny kontekst PDP i usunąć zasady tras.
Notatka
API transferu w tle i API klienta HTTP (C#) nie mogą używać zasad tras.
Interfejsy API oparte na soketach
API oparte na gniazdach dostępne w Windows.Networking.Sockets przestrzeni nazw, takie jak TCP, UDP i gniazda strumieni, zapewniają mechanizm powiązania z określonym interfejsem. Gdy aplikacja używa gniazdowych interfejsów API, powinna związać się z określonym interfejsem na potrzeby routingu danych do specjalnego kontekstu PDP. Po aktywowaniu specjalnego kontekstu PDP, interfejs API AcquireConnectionAsync dostarcza aplikacji informacje o interfejsie. Te informacje mogą służyć do powiązania z określonym interfejsem i rozpoczęcia przesyłania danych.
Liczne informacje dotyczące API zawartości PDP
Systemy Windows 8.1 i Windows 10 dodały następujące interfejsy API do obsługi wielu kontekstów PDP:
CellularApnContext Ta klasa zawiera właściwości używane do określania punktu dostępu w sieci. Obiekt CellularApnContext jest przekazywany przy użyciu wywołania AcquireConnectionAsync w celu nawiązania połączenia z określonym punktem dostępu.
ConnectivityManager::AcquireConnectionAsync Ten interfejs API aktywuje nowe połączenie dla określonej nazwy punktu dostępu (APN) lub kontekstu PDP. Ta metoda asynchroniczna umożliwia aplikacji żądanie połączenia z określonym kontekstem APN lub PDP z odpowiednimi informacjami o konfiguracji. Po aktywowaniu specjalnej aplikacji APN jest ona wyświetlana jako nowy interfejs wirtualny dla systemu Windows i aplikacji.
ConnectivityManager::AddHttpRoutePolicy Ta metoda dodaje zasady stosowane przez stos HTTP do routowania ruchu danych do specjalnego kontekstu PDP. Aplikacja może określić zasady na podstawie miejsc docelowych, takich jak nazwa domeny i adres IP, oraz specjalny profil kontekstu PDP. Stos HTTP systemu Windows korzysta z polityki do kierowania danych do specjalnego kontekstu PDP po tym, jak aplikacja utworzy politykę.
ConnectivityManager::RemoveHttpRoutePolicy Ta metoda usuwa wcześniej dodane zasady tras HTTP.
Poniższy kod pokazuje, jak używać tych interfejsów API na potrzeby transferu danych opartego na protokole 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();
}
Poniższy kod pokazuje, jak używać tych interfejsów API do transferu danych opartego na gniazdach:
// 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();
Aplikacja musi obsługiwać zdarzenie NetworkStatusChanged, aby obsługiwać wszystkie przejścia sieciowe w specjalnym połączeniu kontekstowym PDP.
Scenariusz: Aplikacja mobilna Premium zapewnia bezpłatny dostęp do danych przy użyciu specjalnego APN-u.
W tym scenariuszu aplikacja mobilna łączy szerokopasmowych zapewnia bezpłatny dostęp do danych przy użyciu specjalnego kontekstu PDP. Aplikacja korzysta z połączonej sieci, takiej jak sieć Wi-Fi, jeśli jest bezpłatna, lub używa specjalnej usługi APN, jeśli jest połączona z określoną siecią operatora. Poniższy przykładowy kod ilustruje, w jaki sposób aplikacja może używać wielu interfejsów API kontekstu PDP do przesyłania danych w specjalnym kontekście PDP, jeśli nie są połączone żadne bezpłatne sieci.
// 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();
}
}
Scenariusz: Mobilna aplikacja szerokopasmowa wymaga specjalnego kontekstu PDP do zakupu subskrypcji i konfiguracji usług.
W tym scenariuszu mobilna aplikacja szerokopasmowa wymaga specjalnego kontekstu PDP na potrzeby zakupu i konfigurowania subskrypcji. Ta aplikacja aktywuje specjalny kontekst PDP niezależnie od połączonej sieci.
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.
}
}
Zagadnienia dotyczące mobilnych aplikacji szerokopasmowych
Mobilne aplikacje szerokopasmowe mogą uzyskiwać informacje o użyciu danych lokalnych dla każdego kontekstu PDP i wpływać na system Windows przy użyciu zasad dla specjalnych kontekstów PDP.
Użycie danych lokalnych
W systemie Windows 8 zapewniasz stałą relację opartą na subskrypcji z użytkownikami za pośrednictwem mobilnej aplikacji szerokopasmowej, która ma możliwość wyświetlania bieżącego użycia danych. Użytkownicy mogą wyświetlać swoje bieżące użycie danych i rozumieć swój cykl rozliczeniowy lub datę zakończenia sesji, aby podjąć odpowiednią decyzję. Aby zmniejszyć obciążenie sieci tak bardzo, jak to możliwe, należy okresowo sprawdzać użycie danych w sieci. System Windows udostępnia lokalny interfejs API użycia danych, który można zintegrować z monitorowaniem użycia danych, aby pokazać użytkownikowi bieżące wykorzystanie danych.
Specjalny kontekst PDP umożliwia odróżnienie opłat za dostęp do danych do określonych aplikacji lub usług. Każdy kontekst PDP jest traktowany jako inny profil dla lokalnych liczników użycia danych. Mobilna aplikacja szerokopasmowa może wysyłać zapytania dotyczące użycia danych lokalnych dla każdego kontekstu PDP przez określony czas trwania, podobnie jak kontekst internetowego protokołu PDP w systemie Windows 8. Te informacje umożliwiają wyświetlenie użytkownikowi odpowiedniego środowiska użycia danych.
Poniższy przykładowy kod pokazuje, jak używać API sieciowych do odczytywania wykorzystania danych lokalnych dla wszystkich kontekstów 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
Polityki
Niektórzy operatorzy wskazali, że specjalne konteksty PDP mają ograniczoną przepustowość. Aplikacje, które aktywują specjalny kontekst PDP, ale nie mają dostępu do używania specjalnego kontekstu PDP, mogą utworzyć atak typu "odmowa usługi". Należy ograniczyć użycie specjalnych sieci APN do określonych aplikacji z relacjami biznesowymi. Możesz udostępnić systemowi Windows listę aplikacji platformy UWP ze specjalnymi nazwami APN. System Windows użyje tych informacji, aby ograniczyć dostęp do specjalnych sieci APNs. Jeśli nie podasz listy, system Windows zakłada, że specjalny kontekst PDP jest otwarty dla wszystkich aplikacji.
Notatka
Chodzi tylko o uniknięcie dodatkowego ruchu w specjalnych kontekstach PDP. Nie można polegać na tym jako mechanizmie zabezpieczeń umożliwiającym ograniczenie aplikacji do specjalnych kontekstów PDP. Jeśli chcesz ograniczyć dostęp do specjalnych kontekstów PDP, musisz zaimplementować pewien mechanizm uwierzytelniania lub zabezpieczeń w sieci. Można na przykład użyć filtru, który zezwala tylko na określone adresy IP dla określonego kontekstu PDP.
Niektóre sieci mobilne nie obsługują wielu kontekstów PDP. Możesz aprowizować, czy sieć obsługuje wiele kontekstów PDP, czy nie. Jeśli sieć nie obsługuje wielu kontekstów PDP, system Windows nie powinien zezwalać aplikacjom na tworzenie połączeń na żądanie w specjalnych sieciach APNs. Domyślnie system Windows zakłada obsługę wielu kontekstów PDP.
Poniższy przykładowy plik XML pokazuje, jak za pomocą metadanych aprowizacji systemu Windows udostępnić listę dozwolonych aplikacji dla specjalnych kontekstów 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>
Streaming audio i wideo
Aplikacje do przesyłania strumieniowego audio mogą odtwarzać strumienie audio lub wideo, korzystając ze specjalnego kontekstu PDP. Podobnie jak w przypadku interfejsów API HTTP, Twoja aplikacja może używać następującej logiki do odtwarzania dźwięku lub wideo, korzystając z tagu audio <> lub tagu wideo <>.
Możesz używać struktur wideo opartych na interfejsach API WinInet.
InstantGo
InstantGo zapewnia natychmiastowe doświadczenie użytkownika, jakiego użytkownicy oczekują na swoich telefonach. I podobnie jak w telefonie, InstantGo umożliwia systemowi pozostawanie świeżym, aktualnym i osiągalnym za każdym razem, gdy dostępna jest odpowiednia sieć. Rozwiązanie InstantGo na platformach komputerów o niskiej mocy musi spełniać określone wymagania dotyczące certyfikacji systemu Windows.
Następujące scenariusze są obsługiwane w rozwiązaniu InstantGo:
Aktualizowanie dynamicznych kafelków przy użyciu nowej zawartości
Odbieranie wiadomości e-mail
Pobieranie plików lub przekazywanie ich do witryny internetowej
Udostępnianie zawartości, takiej jak zdjęcia w witrynie internetowej
Odbieranie wiadomości błyskawicznych
Odbieranie wywołań VoIP
Komunikacja w czasie rzeczywistym
Odtwarzanie dźwięku i muzyki w tle
Aby uzyskać więcej informacji na temat funkcji InstantGo, zobacz Introduction to InstantGo.
Aplikacja mobilnego Internetu szerokopasmowego może używać specjalnego kontekstu PDP do włączania niektórych z tych scenariuszy InstantGo. Aby ponownie nawiązać połączenie ze specjalnym kontekstem PDP, gdy zostanie ono rozłączone z powodu braku zasięgu, należy użyć następującej logiki. Gdy urządzenie przejdzie w stan zasilania Connected Standby, system Windows rozłączy wszystkie połączenia ze specjalnymi kontekstami PDP po 10 minutach, a aplikacja musi ponownie zażądać połączenia.
Przesyłanie strumieniowe audio w tle
Aplikacje do przesyłania strumieniowego audio mogą być odtwarzane w tle i w stanie zasilania "Połączone wstrzymanie" przy użyciu specjalnego kontekstu PDP. Aby uzyskać więcej informacji na temat odtwarzania dźwięku w tle, zobacz Jak odtwarzać dźwięk w tle.
Aplikacje komunikacyjne w czasie rzeczywistym
Aplikacje komunikacyjne w czasie rzeczywistym, takie jak VoIP lub aplikacje do czatu, mogą odbierać wyzwalacz aktywacji w specjalnym kontekście PDP. Wyzwalacz aktywacji umożliwia uruchamianie aplikacji w dowolnym momencie, w tym także wtedy, gdy system jest w stanie zasilania Wstrzymanie połączone.
Aby umożliwić ten scenariusz, urządzenie przenośne szerokopasmowe powinno obsługiwać wznawianie filtrów w specjalnym kontekście PDP, jak określono w specyfikacji Mobile Broadband Interface Model (MBIM).
Przenośne urządzenia szerokopasmowe
Aby obsługiwać wiele kontekstów PDP, oprogramowanie układowe urządzenia szerokopasmowego dla urządzeń przenośnych musi obsługiwać wiele kontekstów PDP zgodnie z definicją w specyfikacji MBIM. Musi również przejść wszystkie testy zestawu certyfikacji sprzętu systemu Windows specyficzne dla wielu kontekstów PDP.
Ponieważ ta funkcja jest specyficzna dla operatora, jest opcjonalna dla urządzeń przenośnych szerokopasmowych. Jeśli potrzebujesz tej funkcji, musisz dodać funkcjonalność dla wielu kontekstów PDP w wymaganiach operatora z następującymi elementami:
Oprogramowanie układowe urządzenia powinno obsługiwać wiele strumieni danych IP zgodnie z opisem w sekcji 10.5.12.1 specyfikacji MBIM. Obejmuje to obsługę całej implementacji mechanizmów CID i strumieni danych IP w celu zapewnienia pełnej obsługi wielu kontekstów PDP.
Oprogramowanie układowe urządzenia musi obsługiwać wiele kontekstów PDP z podwójnym nośnikiem (IPv4 & IPv6) do użytku przez Windows.
Obejmuje to 1 kontekst PDP dla łączności z Internetem oraz dodatkowe konteksty PDP dla aplikacji szerokopasmowych na urządzenia mobilne, zgodnie z Twoimi wymaganiami.
Nie wymaga to kontekstów PDP zarządzanych przez urządzenie, które oprogramowanie układowe może wykorzystywać do funkcji SMS i innych kontekstów administracyjnych.
Oprogramowanie układowe urządzenia powinno być w stanie płynnie obsłużyć żądanie systemu operacyjnego hosta dotyczące kontekstu PDP, który jest już zarządzany wewnętrznie przez urządzenie w jego oprogramowaniu układowym.
Oprogramowanie układowe urządzenia powinno nadal abstrakować konteksty PDP dla SMS i kierować je przez identyfikatory CID dla SMS, niezależnie od używanego nośnika.