Pemilihan jaringan per aplikasi (PANS)

Kendaraan semakin bergantung pada konektivitas untuk mengelola daftar kendaraan yang terus bertambah kasus penggunaan yang diminta oleh OEM dan pemilik kendaraan, sehingga jejak data dan biaya-biaya terkait. Gunakan pilihan jaringan per aplikasi (PANS) untuk merutekan traffic aplikasi tertentu di jaringan yang dibayar oleh OEM.

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

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

Mengapa PANS?

PANS dapat:

  • Update pemetaan aplikasi ke jaringan secara dinamis.
  • Mengelola pemilihan rute tingkat aplikasi tanpa mengubah aplikasi.
  • Hanya aplikasi yang diizinkan OEM yang dapat mengakses jaringan OEM yang dipetakan.
  • Developer aplikasi tidak perlu membuat perubahan apa pun untuk menerapkan fitur ini.
  • Metrik yang ditampilkan kepada pengguna melacak penggunaan data aplikasi ke jaringan untuk jaringan yang dikelola OEM jaringan.
  • Akses jaringan aman dan tidak dapat disalahgunakan melalui kasus penggunaan yang tidak diinginkan atau aplikasi yang tidak diizinkan.
  • Perubahan pada pemetaan aplikasi-ke-jaringan PANS dikomunikasikan kepada pengguna.
  • Konfigurasi jaringan yang sama diterapkan ke semua pengguna.

Kelebihan inti

PANS memberi OEM keunggulan inti berikut:

  1. OEM dapat membayar traffic jaringan, bukan pengguna:
    • Update sistem dapat diberikan kepada pengguna tanpa biaya.
    • Penggunaan jaringan aplikasi tertentu dapat diberikan kepada pengguna tanpa biaya.
    • Telemetri dan analisis lainnya dapat dikelola tanpa biaya kepada pengguna.
  2. OEM dapat memastikan aplikasi penting tetap terhubung bahkan tanpa paket data berbayar pengguna. Misalnya, fitur yang vital untuk keselamatan seperti peta, asisten, (mengemudi secara handsfree), dan update sistem terus berfungsi meskipun saat pengguna tidak memiliki paket data.
  3. PANS memberikan perincian kontrol tambahan khusus untuk traffic jaringan {i>routing<i} di Android. Misalnya, OEM dapat menentukan jaringan logis secara optimal topologi jaringan untuk perutean traffic tingkat aplikasi.

Gambar 1. Framework PANS

Menerapkan PANS

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

Gambar 2. Menerapkan PANS

PreferensiJaringanOem

OemNetworkPreference adalah abstraksi atas OEM_PAID dan OEM_PRIVATE NetworkCapabilities memetakan aplikasi berdasarkan nama paket ke preferensi jaringan. Preferensi jaringan memungkinkan hierarki jaringan. Misalnya, memetakan aplikasi ke preferensi OEM_NETWORK_PREFERENCE_OEM_PAID menghasilkan prioritas jaringan default berikut 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 default.

  • OEM_PAID terutama Digunakan untuk aplikasi yang dapat dirutekan di keduanya 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 PANS API

Untuk menggunakan PANS API:

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

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 PAN, perhatikan hal-hal berikut:

  • Preferensi jaringan tidak dipertahankan di seluruh {i>booting<i} dan harus diterapkan kembali pada setiap {i>booting<i}.
  • Anda tidak perlu menginstalnya untuk membuat preferensi untuk aplikasi. Oleh karena itu, jaringan untuk aplikasi yang di-uninstal dapat diatur secara proaktif.
  • Pada waktu tertentu, aplikasi hanya dapat dipetakan ke satu preferensi jaringan.
  • Preferensi jaringan digunakan untuk menyetel jaringan default aplikasi. Ini adalah jaringan yang digunakan saat aplikasi belum menentukan jaringan yang ingin digunakan salah satu API khusus. Hal ini tidak hanya mencakup sebagian besar kebutuhan konektivitas, API khusus tersebut juga memungkinkan penggunaan API khusus yang berkelanjutan seperti API NetworkRequest agar tidak merusak kasus penggunaan aplikasi yang ada. Misalnya, saat sebuah aplikasi hanya ingin melakukan beroperasi melalui jaringan tidak berbayar, PANS tidak akan memaksanya untuk menggunakan jaringan lain.

Mengonfigurasi jaringan

Jaringan dengan OEM_PAID atau OEM_PRIVATE kemampuan harus tersedia saat menggunakan preferensi jaringan yang sesuai. Android memberikan dukungan untuk konfigurasi kemampuan jaringan Ethernet dan Wi-Fi. Sebagai Jaringan Ethernet, Anda dapat menggunakan overlay resource, config_ethernet_interfaces. Kunci ini ditetapkan pada waktu kompilasi.

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

Pikirkan contoh berikut:

  1. Overlay resource 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);
    

Batasi akses ke jaringan PANS

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

Aplikasi yang memiliki izin ini dapat menggunakan jaringan yang dibatasi selama aplikasi meminta secara eksplisit mereka. Namun, aplikasi tersebut tidak akan mendapatkan jaringan yang dibatasi sebagai default. Aplikasi yang dipetakan melalui PANS dapat membuat jaringan OEM terbatas yang ditetapkan sebagai default dan tidak memerlukan izin jaringan yang terbatas untuk menggunakannya. Ketika aplikasi semacam itu memiliki Jaringan OEM yang ditetapkan sebagai jaringan {i> default<i} oleh PANS 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 yang di-debug pengguna dan menunjukkan cara:

  • Menggunakan metrik PANS.
  • Tetapkan kebijakan PANS.
  • Tetapkan kebijakan default untuk perangkat.
  • Hapus kebijakan.
  • Menerapkan kebijakan saat booting.
  • Menggunakan Driver Distraction API (lihat Panduan Gangguan Pengemudi).
  • Update Wi-Fi secara dinamis dengan OEM_PAID dan OEM_PRIVATE.

Gambar 3. Aplikasi referensi

Metrik

Untuk memfasilitasi transparansi seputar penggunaan data, metrik dikumpulkan dan dibuat tersedia terkait jumlah data yang ditransmisikan melalui Pemetaan jaringan OEM_PAID dan OEM_PRIVATE.

Pemecahan masalah

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

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

Semua data dumpsys tersedia dengan membuat laporan bug Android.