Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Pemilihan Jaringan Per Aplikasi (PANS)

Kendaraan semakin mengandalkan konektivitas untuk mengelola daftar kasus penggunaan yang terus bertambah yang diminta oleh OEM dan pemilik kendaraan, yang menghasilkan peningkatan jejak data dan biaya terkait. Gunakan fitur Per-Application Network Selection (PANS) untuk merutekan lalu lintas aplikasi tertentu pada jaringan yang dibayar oleh OEM.

Dengan PANS, Anda dapat mengelola volume dan biaya penggunaan data sekaligus memberikan pengalaman mobil yang tangguh, aman, dan terhubung. PAN:

  • Terdiri dari API baru yang ditambahkan ke ConnectivityManager yang hanya tersedia untuk perangkat otomotif.
  • Menyediakan API saran Wi-Fi yang diperbarui (lihat API saran Wi-Fi untuk konektivitas internet ) untuk menyertakan dukungan untuk kemampuan jaringan PANS yang berubah secara dinamis.
  • Mengumpulkan metrik pendukung.
  • Menyediakan aplikasi referensi.

Mengapa PAN?

PAN dapat:

  • Perbarui pemetaan aplikasi-ke-jaringan secara dinamis.
  • Kelola perutean tingkat aplikasi tanpa membuat perubahan pada aplikasi.
  • Hanya aplikasi yang diizinkan OEM yang dapat mengakses jaringan OEM yang dipetakan.
  • Pengembang aplikasi tidak perlu membuat perubahan apa pun untuk mengimplementasikan fitur ini.
  • Metrik yang dilihat pengguna melacak penggunaan data aplikasi-ke-jaringan untuk jaringan yang dikelola OEM.
  • Akses jaringan aman dan tidak dapat disalahgunakan melalui kasus penggunaan yang tidak diinginkan atau aplikasi yang tidak sah.
  • Perubahan pada pemetaan aplikasi-ke-jaringan PANS dikomunikasikan kepada pengguna.
  • Konfigurasi jaringan yang sama diterapkan di semua pengguna.

Keuntungan inti

PANS memberi OEM keunggulan inti ini:

  1. OEM dapat membayar lalu lintas jaringan alih-alih pengguna:
    • Pembaruan sistem dapat diberikan tanpa biaya kepada pengguna.
    • Penggunaan jaringan aplikasi tertentu dapat diberikan tanpa biaya kepada pengguna.
    • Telemetri dan analitik lainnya dapat dikelola tanpa biaya bagi pengguna.
  2. OEM dapat memastikan aplikasi penting tetap terhubung bahkan tanpa paket data berbayar pengguna. Misalnya, fitur penting keselamatan seperti peta, asisten (mengemudi tanpa menggunakan tangan), dan pembaruan sistem tetap berfungsi meskipun pengguna tidak memiliki paket data.
  3. PANS memberikan perincian kontrol tambahan khusus untuk perutean lalu lintas jaringan di Android. Misalnya, OEM dapat secara optimal menentukan topologi jaringan logis untuk perutean lalu lintas tingkat aplikasi.

Gambar 1 . kerangka kerja PANS

Menerapkan PANS

Untuk mengimplementasikan PANS, disediakan ConnectivityManager API baru, setOemNetworkPreference . API baru ini memetakan aplikasi ke OemNetworkPreference . API ini hanya tersedia untuk perangkat otomotif dan dijelaskan sebagai @SystemApi dengan izin signature baru.

Gambar 2. Menerapkan PANS

Preferensi Jaringan OEM

OemNetworkPreference adalah abstraksi atas aplikasi pemetaan OEM_PAID dan OEM_PRIVATE NetworkCapabilities berdasarkan nama paket ke preferensi jaringan . Preferensi jaringan memungkinkan hierarki jaringan. Misalnya, memetakan aplikasi ke preferensi OEM_NETWORK_PREFERENCE_OEM_PAID akan menghasilkan prioritas berikut dari jaringan default yang ditetapkan ke aplikasi: gunakan jaringan UNMETERED terlebih dahulu, jika UNMETERED tidak tersedia gunakan jaringan OEM_PAID , dan jika OEM_PAID tidak tersedia, gunakan sistem jaringan bawaan.

  • OEM_PAID Digunakan terutama untuk aplikasi yang dapat dirutekan pada jaringan OEM dan non-OEM.
  • OEM_PRIVATE Digunakan terutama untuk aplikasi OEM untuk mendapatkan akses ke jaringan yang didedikasikan untuk mereka.
/**
* If an unmetered network is available, use it.
* Otherwise, if a network with the OEM_PAID capability is available, use it.
* Otherwise, use the general default network.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID = 1;

/**
* If an unmetered network is available, use it.
* Otherwise, if a network with the OEM_PAID capability is available, use it.
* Otherwise, the app doesn't get a default network.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_NO_FALLBACK = 2;

/**
* Use only NET_CAPABILITY_OEM_PAID networks.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PAID_ONLY = 3;

/**
* Use only NET_CAPABILITY_OEM_PRIVATE networks.
*/
public static final int OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY = 4;

Memanggil API PANS

Untuk menggunakan API PANS:

  1. Gunakan OemNetworkPreferences untuk memetakan aplikasi ke preferensi jaringan.
  2. Panggil setOemNetworkPreference dengan objek OemNetworkPreferences .
  3. Gunakan antarmuka Runnable untuk mendengarkan penyelesaian API.

Sebagai contoh:

// Mapping three packages to two network preferences
// Packages have a 1:1 mapping to network preferences
OemNetworkPreferences pref = new OemNetworkPreferences.Builder()
   .addNetworkPreference("first.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID)
   .addNetworkPreference("second.package.name", OEM_NETWORK_PREFERENCE_OEM_PAID)
   .addNetworkPreference("third.package.name", OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY)
   .build();

myConnectivityManager.setOemNetworkPreference(pref, myExecutor, myListener);

Pertimbangan

Saat Anda menerapkan PANS, ingatlah poin-poin berikut:

  • Preferensi jaringan tidak bertahan di seluruh boot dan perlu diterapkan kembali pada setiap boot.
  • Untuk membuat preferensi untuk suatu aplikasi, itu tidak perlu diinstal. Oleh karena itu, preferensi jaringan untuk aplikasi yang dicopot pemasangannya dapat diatur secara proaktif.
  • Pada waktu tertentu, aplikasi hanya dapat dipetakan ke satu preferensi jaringan.
  • Preferensi jaringan digunakan untuk mengatur jaringan default aplikasi. Ini adalah jaringan yang digunakan saat aplikasi belum menentukan jaringan apa yang ingin digunakan melalui salah satu API khusus. Ini tidak hanya mencakup sebagian besar kebutuhan konektivitas, tetapi juga memungkinkan penggunaan berkelanjutan dari API khusus seperti NetworkRequest API agar tidak merusak kasus penggunaan aplikasi yang ada. Misalnya, ketika aplikasi hanya ingin melakukan operasi melalui jaringan tidak berbayar, PANS tidak akan memaksanya untuk menggunakan jaringan lain.

Mengkonfigurasi jaringan

Jaringan dengan kemampuan OEM_PAID atau OEM_PRIVATE harus tersedia saat menggunakan preferensi jaringan yang sesuai. Android menyediakan dukungan untuk konfigurasi kemampuan untuk jaringan Ethernet dan Wi-Fi. Untuk jaringan Ethernet, Anda dapat menggunakan hamparan sumber daya, config_ethernet_interfaces . Ini diatur pada waktu kompilasi.

Untuk Wi-Fi, WifiNetworkSuggestion API dapat digunakan dengan Android 12 API baru, setOemPaid(Boolean) dan setOemPrivate(Boolean) . Ini dapat diubah saat runtime.

Pertimbangkan contoh-contoh ini:

  1. Overlay sumber daya bernama config_ethernet_interfaces menentukan:
    • Nama antarmuka yang akan dikonfigurasi.
    • Nilai NetworkCapabilities yang diinginkan.
      <!-- 11 NET_CAPABILITY_NOT_METERED
           12 NET_CAPABILITY_INTERNET
           14 NET_CAPABILITY_TRUSTED
           15 NET_CAPABILITY_NOT_VPN
           22 NET_CAPABILITY_OEM_PAID || 26 NET_CAPABILITY_OEM_PRIVATE -->
      <string-array translatable="false" name="config_ethernet_interfaces">
         <item>eth0;11,12,14,15,22;;</item></string-array>
      
  2. WiFiNetworkSuggestion ini dapat diubah secara dinamis:
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                   .setSsid(WifiInfo.sanitizeSsid(ssid))
                   .setOemPrivate(true)
                   .build());
    mWifiManager.addNetworkSuggestions(list);
    

Membatasi akses ke jaringan PANS

Memberi tag jaringan dengan kemampuan OEM_PAID atau OEM_PRIVATE menandai jaringan tersebut sebagai jaringan terbatas . Jaringan yang dibatasi hanya dapat digunakan oleh aplikasi yang memiliki izin CONNECTIVITY_USE_RESTRICTED_NETWORKS , yang dikendalikan oleh OEM.

Aplikasi dengan izin ini dapat menggunakan jaringan terbatas asalkan aplikasi secara eksplisit memintanya . Namun, aplikasi ini tidak akan mendapatkan jaringan terbatas sebagai defaultnya. Aplikasi yang dipetakan melalui PANS dapat memiliki jaringan OEM terbatas yang ditetapkan sebagai default dan tidak memerlukan izin jaringan terbatas untuk menggunakannya. Ketika aplikasi tersebut memiliki jaringan OEM terbatas yang ditetapkan sebagai jaringan default oleh PANS, aplikasi tersebut juga memiliki kemampuan untuk secara eksplisit meminta jaringan OEM tersebut jika aplikasi memilih untuk melakukannya.

Meninjau aplikasi referensi

Aplikasi referensi (termasuk kode) bernama NetworkPreferenceApp disediakan di build otomotif debug pengguna dan mendemonstrasikan cara:

  • Konsumsi metrik PANS.
  • Tetapkan kebijakan PANS.
  • Tetapkan kebijakan default untuk perangkat.
  • Hapus kebijakan.
  • Terapkan kebijakan saat boot.
  • Gunakan Driver Distraction API (lihat Panduan Pengalihan Pengemudi ).
  • Perbarui Wi-Fi secara dinamis dengan OEM_PAID dan OEM_PRIVATE .

Gambar 3. Aplikasi referensi

Metrik

Untuk memfasilitasi transparansi seputar penggunaan data, metrik dikumpulkan dan tersedia terkait jumlah data yang dikirimkan melalui pemetaan jaringan OEM_PAID dan OEM_PRIVATE .

Penyelesaian masalah

Sebagian besar kondisi pemecahan masalah muncul dari aplikasi yang menggunakan jaringan yang salah (tidak ada konektivitas jaringan) atau kelebihan data. Untuk mengaktifkan resolusi cepat:

  • dumpsys konektivitas menyertakan daftar jaringan default per aplikasi yang aktif dan aplikasi terkaitnya (dipetakan dari PANS).
  • Netd dumpsys menyertakan IP UID dan aturan firewall.
  • Netstats dumpsys menyertakan metrik PANS per aplikasi. Misalnya, aplikasi mana yang menggunakan jaringan OEM mana.

Semua data dumpsys tersedia dengan membuat laporan bug Android.