Bagikan melalui


Mengembangkan aplikasi menggunakan beberapa konteks PDP

Konteks Packet Data Protocol (PDP) menawarkan koneksi data paket tempat perangkat dan jaringan seluler dapat bertukar paket IP. Sesuai standar 3GPP, perangkat dapat mengaktifkan lebih dari satu konteks PDP sekaligus. Di Windows 8.1 dan Windows 10, beberapa konteks PDP didukung dan memungkinkan aplikasi untuk berkomunikasi melalui konteks PDP khusus ke jaringan seluler bersama dengan konteks PDP internet yang didukung di Windows 8. Anda dapat menggunakan fitur ini untuk menciptakan pengalaman yang berbeda dan layanan inovatif di Windows. Anda juga dapat bermitra dengan pengembang aplikasi untuk mengembangkan pengalaman STREAMING VOIP dan video berkualitas tinggi bagi pelanggan mereka.

Berikut adalah gambar yang menunjukkan cara kerja beberapa konteks PDP di Windows 8.1 dan Windows 10:

Diagram memperlihatkan cara kerja beberapa konteks PDP di Windows 8.1 dan Windows 10.

Gunakan bagian berikut dalam topik ini untuk mempelajari selengkapnya tentang beberapa konteks PDP:

Skenario utama

Anda dapat menggunakan beberapa konteks PDP untuk mengaktifkan layanan premium.

  • Penagihan Yang Dibedakan – Anda dapat memvariasikan pembatasan data atau penagihan dengan menggunakan beberapa konteks PDP. Misalnya, Contoso adalah operator seluler yang mengembangkan aplikasi pencadangan data untuk pelanggan mereka. Sebagai operator seluler, Contoso dapat membuat beberapa konteks PDP dan memungkinkan pelanggan premium menggunakan aplikasi secara gratis. Semua pelanggan lain dikenakan biaya terpisah untuk penggunaan.

  • Rich Communication Services – Inisiatif global yang dibuat oleh Asosiasi GSM untuk menyediakan layanan komunikasi yang kaya, seperti buku telepon yang ditingkatkan, pesan yang ditingkatkan, dan panggilan yang diperkaya. Rich Communication Services menyediakan interoperabilitas di seluruh operator seluler dan menawarkan cara baru untuk menggunakan aset dan kemampuan yang ada untuk memberikan layanan komunikasi berkualitas tinggi dan inovatif.

  • Konektivitas Bersponsor - Ini memungkinkan pengguna mengakses jenis konten tertentu tanpa mengurangi penggunaan data bulanan mereka. Penyedia konten membuat pengaturan untuk mengganti biaya operator seluler dengan membayar mereka secara langsung, melakukan kesepakatan berbagi pendapatan, atau beberapa pengaturan bisnis lainnya.

  • Hotspot Pribadi - Beberapa operator seluler mengenakan tarif yang berbeda ketika koneksi digunakan sebagai hotspot pribadi. Anda dapat menggunakan beberapa konteks PDP untuk membedakan antara keduanya.

Aplikasi broadband seluler

Aplikasi broadband seluler UWP dapat memanfaatkan beberapa konteks PDP untuk mengaktifkan konteks PDP khusus dan menentukan aturan untuk merutekan lalu lintas data. Aplikasi ini dapat membuat aturan untuk tujuan tertentu atau untuk semua lalu lintas data.

Ketika aplikasi broadband seluler perlu bertukar data dengan jaringan, aplikasi tersebut memeriksa jaringan yang tersedia dan terhubung. Jika aplikasi broadband seluler memiliki aturan khusus untuk salah satu jaringan ini, aplikasi ini menggunakan CONNECTION Manager API untuk membuka konteks PDP khusus. Jika koneksi ini berhasil, konteks PDP menyediakan aturan perutean untuk koneksi ini dan mentransfer data menggunakan API jaringan. Aplikasi broadband seluler harus mengulangi ini jika menerima peristiwaNetworkStatusChanged untuk melihat apakah ada koneksi yang telah berubah dan apakah perlu membuka konteks PDP untuk koneksi baru.

Flowchart yang mengilustrasikan proses pemeriksaan aplikasi broadband seluler yang tersedia dan jaringan yang terhubung.

API Antarmuka Pemrograman Aplikasi Jaringan

Untuk mengirim data dengan menggunakan konteks PDP khusus, aplikasi Microsoft Store harus menggunakan logika yang berbeda berdasarkan API jaringan yang digunakannya untuk mentransfer data.

API berbasis HTTP

API berbasis HTTP, seperti XMLHTTPRequest, IXHR2, Windows.Web.Syndication, dan Windows.Web.AtomPub, dan API berdasarkan protokol HTTP Windows, seperti jQuery dan Windows.Web.Http, tidak memiliki kemampuan untuk mengikat ke antarmuka tertentu. Untuk API ini, Windows menangani perutean data ke konteks PDP khusus dengan menggunakan kebijakan. Setelah konteks PDP khusus diaktifkan, aplikasi dapat menentukan aturan perutean berdasarkan konteks tujuan dan PDP khusus. Tujuannya dapat berupa nama domain atau alamat IP, seperti video.fabrikam.com, .contoso.com, atau 123.23.34.333. Setelah aturan perutean ditentukan, jika aplikasi menggunakan salah satu API HTTP di atas untuk mentransfer data, Windows akan mengirim data ke dalam konteks PDP khusus berdasarkan aturan perutean tersebut. Setelah aplikasi selesai mentransfer data, aplikasi harus memutuskan konteks PDP khusus dan menghapus kebijakan rute.

Nota

API Transfer Latar Belakang dan API Klien HTTP (C#) tidak dapat menggunakan kebijakan rute.

Diagram yang menunjukkan proses penggunaan API berbasis HTTP untuk mengirim data melalui konteks PDP khusus.

API berbasis soket

API berbasis soket yang tersedia di Windows.Networking.Sockets namespace, seperti TCP, UDP, dan soket streaming, menyediakan mekanisme untuk mengikat antarmuka tertentu. Saat aplikasi menggunakan API soket, aplikasi harus mengikat antarmuka tertentu untuk merutekan data ke konteks PDP khusus. Setelah konteks PDP khusus diaktifkan, API AcquireConnectionAsync menyediakan informasi antarmuka ke aplikasi. Ini dapat menggunakan informasi ini untuk mengikat ke antarmuka tertentu dan mulai mentransfer data.

Diagram yang menggambarkan proses penggunaan API berbasis soket untuk mengirim data melalui konteks PDP khusus.

Beberapa info API konten PDP yang banyak

Windows 8.1 dan Windows 10 telah menambahkan API berikut untuk mendukung beberapa konteks PDP:

  • CellularApnContext Kelas ini berisi properti yang digunakan untuk menentukan titik akses pada jaringan. Objek CellularApnContext diteruskan dengan panggilan AcquireConnectionAsync untuk membuat koneksi ke titik akses tertentu.

  • ConnectivityManager::AcquireConnectionAsync API ini mengaktifkan koneksi baru untuk konteks Nama Titik Akses (APN) atau PDP tertentu. Metode asinkron ini memungkinkan aplikasi untuk meminta koneksi ke konteks APN atau PDP tertentu dengan informasi konfigurasi yang sesuai. Setelah APN khusus diaktifkan, APN tersebut muncul sebagai antarmuka virtual baru untuk Windows dan aplikasi.

  • ConnectivityManager::AddHttpRoutePolicy Metode ini menambahkan kebijakan yang akan digunakan oleh lalu lintas tumpukan HTTP untuk merutekan data ke konteks PDP khusus. Aplikasi ini dapat menentukan kebijakan berdasarkan tujuan, seperti nama domain dan alamat IP, dan profil konteks PDP khusus. Stack HTTP Windows menggunakan kebijakannya untuk merutekan data ke konteks PDP khusus setelah aplikasi membuat kebijakan tersebut.

  • ConnectivityManager::RemoveHttpRoutePolicy Metode ini menghapus kebijakan rute HTTP yang ditambahkan sebelumnya.

Kode berikut menunjukkan cara menggunakan API ini untuk transfer data berbasis 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();
}

Kode berikut menunjukkan kepada Anda cara menggunakan API ini untuk transfer data berbasis soket:

// 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();

Aplikasi Anda harus menangani peristiwa NetworkStatusChanged untuk menangani transisi jaringan apa pun pada koneksi konteks PDP khusus.

Skenario: Aplikasi broadband seluler premium menyediakan akses data gratis menggunakan APN khusus

Dalam skenario ini, aplikasi broadband seluler menyediakan akses data gratis menggunakan konteks PDP khusus. Aplikasi ini menggunakan jaringan yang terhubung, seperti jaringan Wi-Fi, jika gratis atau menggunakan APN khusus jika terhubung ke jaringan operator tertentu. Kode sampel berikut menggambarkan bagaimana aplikasi dapat menggunakan beberapa API konteks PDP untuk mentransfer data pada konteks PDP khusus jika tidak ada jaringan gratis yang terhubung.

// 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();
  }
}

Skenario: Aplikasi broadband seluler memerlukan Konteks PDP khusus untuk pembelian dan provisi langganan

Dalam skenario ini, aplikasi broadband seluler memerlukan konteks PDP khusus untuk pembelian dan provisi langganan. Aplikasi ini akan mengaktifkan konteks PDP khusus terlepas dari jaringan yang terhubung.

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.
  }
}

Pertimbangan untuk aplikasi broadband seluler

Aplikasi broadband seluler bisa mendapatkan informasi penggunaan data lokal untuk setiap konteks PDP dan memengaruhi Windows dengan kebijakan untuk konteks PDP khusus.

Penggunaan data lokal

Di Windows 8, Anda menyediakan hubungan berbasis langganan yang sedang berlangsung dengan pengguna melalui aplikasi broadband seluler Anda yang memiliki kemampuan untuk menunjukkan penggunaan data saat ini. Pengguna dapat melihat penggunaan data mereka saat ini dan memahami siklus penagihan atau tanggal akhir sesi mereka untuk membuat keputusan yang sesuai. Untuk mengurangi beban pada jaringan sebanyak mungkin, Anda harus memeriksa penggunaan data dengan jaringan secara berkala. Windows menyediakan API Penggunaan Data lokal yang dapat Anda gunakan untuk digabungkan dengan penggunaan data untuk menunjukkan penggunaan data saat ini kepada pengguna.

Konteks PDP khusus memberi Anda kemampuan untuk membedakan biaya akses data ke aplikasi atau layanan tertentu. Setiap konteks PDP yang berbeda diperlakukan sebagai profil yang berbeda untuk penghitung penggunaan data lokal. Aplikasi broadband seluler dapat mengkueri penggunaan data lokal untuk setiap konteks PDP selama durasi tertentu, mirip dengan cara kerja konteks PDP internet di Windows 8. Anda dapat menggunakan informasi ini untuk menunjukkan pengalaman penggunaan data yang sesuai kepada pengguna.

Kode sampel berikut menunjukkan bagaimana Anda dapat menggunakan API jaringan untuk membaca penggunaan data lokal untuk semua konteks 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

Kebijakan

Beberapa operator telah menunjukkan bahwa konteks PDP khusus memiliki bandwidth terbatas. Aplikasi yang mengaktifkan konteks PDP khusus tetapi tidak memiliki akses untuk menggunakannya dapat menyebabkan serangan penolakan layanan. Anda harus membatasi penggunaan APN khusus ke aplikasi tertentu dengan hubungan bisnis. Anda dapat memberikan daftar aplikasi UWP kepada Windows dengan nama APN khusus. Windows akan menggunakan informasi tersebut untuk membatasi akses ke APN khusus. Jika Anda tidak memberikan daftar, Windows mengasumsikan bahwa konteks PDP khusus terbuka untuk semua aplikasi.

Nota

Ini hanya untuk menghindari lalu lintas tambahan pada konteks PDP khusus. Anda tidak dapat mengandalkan ini sebagai mekanisme keamanan untuk membatasi aplikasi ke konteks PDP khusus. Jika Anda ingin membatasi akses ke konteks PDP khusus, Anda harus menerapkan beberapa mekanisme autentikasi atau keamanan di jaringan Anda. Misalnya, Anda dapat menggunakan filter yang hanya memungkinkan alamat IP tertentu untuk konteks PDP tertentu.

Beberapa jaringan seluler tidak mendukung beberapa konteks PDP. Anda dapat menyediakan apakah jaringan Anda mendukung beberapa konteks PDP atau tidak. Jika jaringan Anda tidak mendukung beberapa konteks PDP, Windows tidak boleh mengizinkan aplikasi membuat koneksi sesuai permintaan pada APN khusus. Secara default, Windows mengasumsikan Anda mendukung beberapa konteks PDP.

Contoh file XML berikut menunjukkan cara menggunakan metadata provisi Windows untuk menyediakan daftar aplikasi yang diizinkan untuk konteks PDP khusus:

<?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 dan video

Aplikasi streaming audio dapat memutar aliran audio atau video menggunakan konteks PDP khusus. Mirip dengan API HTTP, aplikasi Anda dapat menggunakan logika berikut untuk memutar audio atau video dengan menggunakan< audio >atau tag< video >.

Diagram memperlihatkan alur kerja aplikasi streaming menggunakan konteks PDP khusus.

Anda dapat menggunakan kerangka kerja video berdasarkan API WinInet.

InstantGo

InstantGo memberikan pengalaman pengguna yang menyala dan mati seketika seperti yang diharapkan pengguna di ponsel mereka. Dan sama seperti di ponsel, InstantGo memungkinkan sistem untuk tetap segar, up-to-date, dan dapat dijangkau setiap kali jaringan yang sesuai tersedia. InstantGo pada platform PC berdaya rendah harus memenuhi persyaratan Sertifikasi Windows tertentu.

Skenario berikut didukung di InstantGo:

  • Memperbarui ubin dinamis dengan konten baru

  • Menerima email

  • Mengunduh file dari, atau mengunggahnya ke situs web

  • Berbagi konten, seperti foto di situs web

  • Menerima pesan instan

  • Menerima panggilan VoIP

  • Berkomunikasi secara waktu nyata

  • Memutar audio dan musik latar belakang

Untuk informasi selengkapnya tentang InstantGo, lihat Pengantar InstantGo.

Aplikasi broadband seluler Anda dapat menggunakan konteks PDP khusus untuk mengaktifkan beberapa skenario InstantGo ini. Anda perlu menggunakan logika berikut untuk menyambungkan kembali ke konteks PDP khusus jika terputus karena tidak tercakup. Saat perangkat memasuki status daya Siaga Tersambung, Windows akan memutuskan semua koneksi ke konteks PDP khusus setelah 10 menit dan aplikasi Anda harus meminta koneksi lagi.

Diagram Alur yang mengilustrasikan proses menyambungkan kembali ke konteks PDP khusus dalam skenario InstantGo.

Streaming audio di latar belakang

Aplikasi streaming audio dapat memutar audio di latar belakang dan dalam keadaan daya Siaga Terhubung dengan menggunakan konteks PDP khusus. Untuk informasi selengkapnya tentang cara memutar audio di latar belakang, lihat Cara memutar audio di latar belakang.

Aplikasi komunikasi real time

Aplikasi komunikasi real time, seperti VoIP atau aplikasi obrolan, dapat menerima pemicu bangun pada konteks PDP khusus. Pemicu bangun memungkinkan aplikasi Anda dipicu setiap saat, termasuk ketika sistem berada dalam keadaan daya Siaga Terhubung.

Untuk mengaktifkan skenario ini, perangkat broadband seluler harus mendukung filter aktif pada konteks PDP khusus, seperti dinyatakan dalam spesifikasi Mobile Broadband Interface Model (MBIM).

Perangkat broadband seluler

Untuk mendukung beberapa konteks PDP, firmware Perangkat broadband seluler harus mendukung beberapa konteks PDP, seperti yang didefinisikan dalam spesifikasi MBIM. Ini juga harus lulus pengujian Kit Sertifikasi Perangkat Keras Windows khusus untuk beberapa konteks PDP.

Karena fitur ini spesifik untuk operator, fitur ini bersifat opsional untuk perangkat broadband seluler. Jika Anda memerlukan fitur ini, Anda harus menambahkan beberapa fungsionalitas konteks PDP dalam persyaratan operator dengan yang berikut:

  • Firmware perangkat harus mendukung beberapa aliran data IP sebagaimana dirinci dalam bagian 10.5.12.1 dari spesifikasi MBIM. Ini termasuk mendukung semua implementasi kontrol CID dan aliran data IP untuk dukungan penuh dari beberapa konteks PDP.

  • Firmware perangkat harus mendukung beberapa konteks PDP pembawa ganda (IPv4 & IPv6) untuk digunakan oleh Windows.

    • Ini termasuk 1 untuk konektivitas internet dan konteks PDP tambahan untuk aplikasi broadband seluler, sesuai dengan kebutuhan Anda.

    • Ini tidak memerlukan konteks PDP yang dikelola oleh perangkat yang mungkin digunakan oleh firmware untuk SMS dan keperluan administratif lainnya.

  • Firmware perangkat harus dapat memanfaatkan permintaan sistem operasi host secara efisien untuk konteks PDP yang sudah dikelola secara internal oleh perangkat di dalam firmware-nya.

  • Firmware perangkat harus terus mengabstraksi konteks PDP SMS dan merutekannya melalui ID saluran SMS terlepas dari jenis pembawa yang digunakan di tingkat bawah.