Pemilihan jaringan per aplikasi (PANS)

Kendaraan semakin mengandalkan konektivitas untuk mengelola daftar kasus penggunaan yang terus bertambah yang diminta oleh OEM dan pemilik kendaraan, sehingga meningkatkan jejak data dan biaya terkait. Gunakan fitur pemilihan 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 sekaligus memberikan pengalaman mobil yang terhubung, aman, dan andal. PANS:

  • Terdiri dari API baru yang ditambahkan ke ConnectivityManager yang hanya tersedia untuk perangkat otomotif.
  • Menyediakan Wi-Fi suggestion API yang telah diupdate (lihat Wi-Fi suggestion 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:

  • Memperbarui pemetaan aplikasi ke jaringan secara dinamis.
  • Mengelola perutean tingkat aplikasi tanpa melakukan perubahan pada aplikasi.
  • Hanya aplikasi yang diizinkan OEM yang dapat mengakses jaringan OEM yang dipetakan.
  • Developer aplikasi tidak perlu melakukan perubahan apa pun untuk menerapkan fitur ini.
  • Metrik yang ditampilkan kepada 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 untuk semua pengguna.

Keunggulan utama

PANS memberikan keunggulan inti berikut kepada OEM:

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

Menerapkan PANS

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

OemNetworkPreference

OemNetworkPreference adalah abstraksi atas OEM_PAID dan OEM_PRIVATE NetworkCapabilities yang memetakan aplikasi menurut nama paket ke preferensi jaringan. Preferensi jaringan memungkinkan hierarki jaringan. Misalnya, memetakan aplikasi ke preferensi OEM_NETWORK_PREFERENCE_OEM_PAID akan 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 jaringan default sistem.

  • OEM_PAID Digunakan terutama untuk aplikasi yang dapat dirutekan di jaringan OEM dan non-OEM.
  • OEM_PRIVATE Digunakan terutama untuk aplikasi OEM guna mendapatkan akses ke jaringan khusus untuknya.
/**
* 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 objek 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 PANS, perhatikan poin-poin berikut:

  • Preferensi jaringan tidak dipertahankan di seluruh proses booting dan perlu diterapkan kembali pada setiap proses booting.
  • Untuk membuat preferensi aplikasi, aplikasi tidak perlu diinstal. Oleh karena itu, preferensi jaringan untuk aplikasi yang di-uninstal dapat ditetapkan secara proaktif.
  • Pada waktu tertentu, aplikasi hanya dapat dipetakan ke satu preferensi jaringan.
  • Preferensi jaringan digunakan untuk menyetel jaringan default aplikasi. Jaringan ini adalah jaringan yang digunakan saat aplikasi belum menentukan jaringan yang ingin digunakan melalui salah satu API khusus. Selain mencakup sebagian besar kebutuhan konektivitas, hal ini juga memungkinkan penggunaan berkelanjutan API khusus seperti NetworkRequest API agar tidak merusak kasus penggunaan aplikasi yang ada. Misalnya, saat aplikasi hanya ingin melakukan operasi melalui jaringan yang tidak diukur, PANS tidak akan memaksanya menggunakan jaringan lain.

Mengonfigurasi jaringan

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

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

Perhatikan 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);

Membatasi akses ke jaringan PANS

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

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

Meninjau aplikasi referensi

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

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

Metrik

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

Pemecahan masalah

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

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

Semua data dumpsys tersedia dengan membuat laporan bug Android.