Kendaraan semakin mengandalkan konektivitas untuk mengelola daftar kasus penggunaan yang terus meningkat 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 yang ditentukan di jaringan yang dibayar oleh OEM.
Dengan PANS, Anda dapat mengelola volume dan biaya penggunaan data sekaligus memberikan pengalaman mobil yang andal, aman, dan terhubung. PANS:
- Terdiri dari API baru yang ditambahkan ke
ConnectivityManager
yang hanya tersedia untuk perangkat otomotif. - Menyediakan Wi-Fi suggestion API yang diperbarui (lihat Wi-Fi suggestion API untuk konektivitas internet) untuk menyertakan dukungan bagi kemampuan jaringan PANS yang berubah secara dinamis.
- Mengumpulkan metrik pendukung.
- Memberikan aplikasi referensi.
Mengapa PANS?
PANS dapat:
- Memperbarui pemetaan aplikasi ke jaringan secara dinamis.
- Mengelola pemilihan rute 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 akan disampaikan kepada pengguna.
- Konfigurasi jaringan yang sama diterapkan di semua pengguna.
Keunggulan inti
PANS memberikan keunggulan inti berikut kepada OEM:
- OEM dapat membayar traffic jaringan, bukan pengguna:
- Update sistem dapat diberikan tanpa biaya kepada pengguna.
- Penggunaan jaringan aplikasi yang ditentukan dapat diberikan tanpa biaya kepada pengguna.
- Telemetri dan analisis lainnya dapat dikelola tanpa biaya bagi pengguna.
- 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 bahkan saat pengguna tidak memiliki paket data.
- PANS memberikan kontrol terperinci tambahan khusus untuk perutean traffic jaringan di Android. Misalnya, OEM dapat menentukan topologi jaringan logis secara optimal untuk pemilihan rute traffic tingkat aplikasi.
Gambar 1. Framework PANS
Mengimplementasikan PANS
Untuk menerapkan PANS, API ConnectivityManager
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. Mengimplementasikan PANS
OemNetworkPreference
OemNetworkPreference
adalah abstraksi atas aplikasi pemetaan OEM_PAID
dan
OEM_PRIVATE
NetworkCapabilities
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 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:
- Gunakan
OemNetworkPreferences
untuk memetakan aplikasi ke preferensi jaringan. - Panggil
setOemNetworkPreference
dengan objekOemNetworkPreferences
. - 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 booting dan perlu diterapkan kembali pada setiap booting.
- Untuk membuat preferensi aplikasi, aplikasi tidak perlu diinstal. Oleh karena itu, preferensi jaringan untuk aplikasi yang di-uninstal dapat disetel secara proaktif.
- Pada waktu tertentu, aplikasi hanya dapat dipetakan ke satu preferensi jaringan.
- Preferensi jaringan digunakan untuk menetapkan jaringan default aplikasi. Ini adalah
jaringan yang digunakan saat aplikasi belum menentukan jaringan yang ingin digunakan melalui
salah satu API khusus. Hal ini tidak hanya mencakup sebagian besar kebutuhan konektivitas, tetapi juga memungkinkan penggunaan API khusus seperti
NetworkRequest
API agar tidak merusak kasus penggunaan aplikasi yang ada. Misalnya, jika aplikasi hanya ingin melakukan operasi melalui jaringan tanpa kuota, PANS tidak akan memaksanya untuk 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, WifiNetworkSuggestion
API dapat digunakan dengan
API Android 12 baru, setOemPaid(Boolean)
, dan
setOemPrivate(Boolean)
. Hal ini dapat diubah saat runtime.
Perhatikan contoh berikut:
- 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>
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
akan 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 memintanya secara eksplisit. Namun, aplikasi ini tidak akan mendapatkan jaringan yang dibatasi sebagai default. Aplikasi yang dipetakan melalui PANS dapat memiliki jaringan OEM yang dibatasi yang ditetapkan sebagai default dan tidak akan memerlukan izin jaringan yang dibatasi untuk menggunakannya. Jika aplikasi tersebut memiliki jaringan OEM yang dibatasi dan 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.
- Menetapkan kebijakan PANS.
- Menetapkan kebijakan default untuk perangkat.
- Menghapus kebijakan.
- Menerapkan kebijakan saat booting.
- Gunakan Driver Distraction API (lihat Panduan Gangguan Pengemudi).
- Memperbarui Wi-Fi secara dinamis dengan
OEM_PAID
danOEM_PRIVATE
.
Gambar 3. Aplikasi referensi
Metrik
Untuk memfasilitasi transparansi terkait penggunaan data, metrik dikumpulkan dan
tersedia terkait jumlah data yang dikirim 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 kelebihan data. Untuk mengaktifkan resolusi cepat:
dumpsys
konektivitas mencakup 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 PAN per aplikasi. Misalnya, aplikasi mana yang menggunakan jaringan OEM mana.
Semua data dumpsys
tersedia dengan membuat bugreport Android.