Araçlar, hem OEM'ler hem de araç sahipleri tarafından talep edilen artan kullanım durumları listesini yönetmek için giderek daha fazla bağlantıya güveniyor ve bu da veri ayak izinin ve ilgili maliyetlerin artmasına neden oluyor. Belirtilen uygulamaların trafiğini OEM tarafından ödenen ağlara yönlendirmek için uygulama başına ağ seçimi (PANS) özelliğini kullanın.
PANS ile veri kullanımının hacmini ve maliyetini yönetirken aynı zamanda sağlam, güvenli ve bağlantılı bir araç deneyimi sağlayabilirsiniz. TAVALAR:
- Yalnızca otomotiv cihazlarında kullanılabilen
ConnectivityManager
eklenen yeni bir API'den oluşur. - Dinamik olarak değişen PANS ağ özelliklerine destek sağlamak üzere güncellenmiş bir Wi-Fi öneri API'si ( İnternet bağlantısı için Wi-Fi öneri API'sine bakın) sağlar.
- Destekleyici ölçümleri toplar.
- Bir referans uygulaması sağlar.
Neden PANS?
PANS şunları yapabilir:
- Uygulamadan ağa eşlemeleri dinamik olarak güncelleyin.
- Uygulamalarda değişiklik yapmadan uygulama düzeyinde yönlendirmeyi yönetin.
- Eşlenen OEM ağlarına yalnızca OEM'in izin verdiği uygulamalar erişebilir.
- Uygulama geliştiricilerinin bu özelliği uygulamak için herhangi bir değişiklik yapmasına gerek yoktur.
- Kullanıcıya yönelik ölçümler, OEM tarafından yönetilen ağlar için uygulamadan ağa veri kullanımını izler.
- Ağ erişimi güvenlidir ve istenmeyen kullanım durumları veya yetkisiz uygulamalar yoluyla kötüye kullanılamaz.
- PANS uygulamasından ağ eşlemelerinde yapılan değişiklikler kullanıcılara iletilir.
- Tüm kullanıcılara aynı ağ yapılandırması uygulanır.
Temel avantajlar
PANS, OEM'lere şu temel avantajları sağlar:
- OEM'ler kullanıcılar yerine ağ trafiği için ödeme yapabilir:
- Sistem güncellemeleri kullanıcıya hiçbir ücret ödemeden sağlanabilir.
- Belirtilen uygulamaların ağ kullanımı kullanıcıya hiçbir ücret ödemeden sağlanabilir.
- Telemetri ve diğer analizler kullanıcıya herhangi bir maliyet getirmeden yönetilebilir.
- OEM'ler, kritik uygulamaların kullanıcı tarafından ödenen bir veri planı olmasa bile bağlantıda kalmasını sağlayabilir. Örneğin, haritalar, asistan (eller serbest sürüş) ve sistem güncellemeleri gibi güvenlik açısından kritik özellikler, kullanıcının veri planı olmadığında bile çalışmaya devam eder.
- PANS, Android'deki ağ trafiği yönlendirmesine özel ek denetim ayrıntı düzeyi sağlar. Örneğin, OEM'ler uygulama düzeyinde trafiğin yönlendirilmesi için mantıksal bir ağ topolojisini en iyi şekilde tanımlayabilir.
Şekil 1 . PANS çerçevesi
PANS'ı uygulayın
PANS'ı uygulamak için yeni bir ConnectivityManager
API'si olan setOemNetworkPreference
sağlanır. Bu yeni API, uygulamaları bir OemNetworkPreference
ile eşler. Bu API yalnızca otomotiv cihazlarında kullanılabilir ve yeni signature
izniyle @SystemApi
olarak açıklanmıştır.
Şekil 2. PANS'ı Uygulama
OemNetworkTercihi
OemNetworkPreference
, uygulamaları paket adına göre bir ağ tercihine göre eşleyen OEM_PAID
ve OEM_PRIVATE
NetworkCapabilities
üzerinden bir soyutlamadır. Ağ tercihleri ağ hiyerarşilerine izin verir. Örneğin, bir uygulamayı OEM_NETWORK_PREFERENCE_OEM_PAID
tercihiyle eşlemek, bir uygulamaya atanan varsayılan ağların aşağıdaki önceliğine yol açar: önce UNMETERED
bir ağ kullanın, UNMETERED
mevcut değilse bir OEM_PAID
ağı kullanın ve OEM_PAID
mevcut değilse, sistem varsayılanını kullanın ağ.
-
OEM_PAID
Öncelikle hem OEM hem de OEM olmayan ağlara yönlendirilebilen uygulamalar için kullanılır. -
OEM_PRIVATE
Öncelikle OEM uygulamalarının kendilerine ayrılmış bir ağa erişmesi için kullanılır.
/** * 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;
PANS API'lerini çağırın
PANS API'lerini kullanmak için:
- Bir uygulamayı bir ağ tercihiyle eşlemek için
OemNetworkPreferences
kullanın. -
OemNetworkPreferences
nesnesiylesetOemNetworkPreference
öğesini çağırın. - API'nin tamamlanmasını dinlemek için
Runnable
arayüzünü kullanın.
Örneğin:
// 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);
Hususlar
PANS'ı uygularken aşağıdaki noktaları aklınızda bulundurun:
- Ağ tercihleri tüm önyüklemelerde kalıcı değildir ve her önyüklemede yeniden uygulanması gerekir.
- Bir uygulamaya yönelik tercih oluşturmak için uygulamanın yüklü olması gerekmez. Bu nedenle, kaldırılan uygulamalara ilişkin ağ tercihleri proaktif olarak ayarlanabilir.
- Herhangi bir zamanda bir uygulama yalnızca tek bir ağ tercihiyle eşlenebilir.
- Ağ tercihleri, bir uygulamanın varsayılan ağını ayarlamak için kullanılır. Bu, bir uygulamanın özel API'lerden biri aracılığıyla hangi ağları kullanmak istediğini belirtmediğinde kullanılan ağdır. Bu yalnızca bağlantı ihtiyaçlarının büyük çoğunluğunu karşılamakla kalmaz, aynı zamanda mevcut uygulama kullanım durumlarını bozmamak için
NetworkRequest
API gibi özel API'lerin sürekli kullanımına da olanak tanır. Örneğin, bir uygulama yalnızca tarifesiz bir ağ üzerinden işlem yapmak istediğinde, PANS onu başka bir ağı kullanmaya zorlamaz.
Bir ağ yapılandırma
İlgili ağ tercihi kullanılırken, OEM_PAID
veya OEM_PRIVATE
özelliklerine sahip bir ağ mevcut olmalıdır. Android, Ethernet ve Wi-Fi ağlarına yönelik yeteneklerin yapılandırılması için destek sağlar. Ethernet ağları için config_ethernet_interfaces
kaynak katmanını kullanabilirsiniz. Bu derleme zamanında ayarlanır.
Wi-Fi için WifiNetworkSuggestion
API, yeni Android 12 API'leri setOemPaid(Boolean)
ve setOemPrivate(Boolean)
ile kullanılabilir. Bu çalışma zamanında değiştirilebilir.
Şu örnekleri göz önünde bulundurun:
-
config_ethernet_interfaces
adlı bir kaynak katmanı şunları belirtir:- Yapılandırılacak arayüzün adı.
- İstenilen
NetworkCapabilities
değerleri.<!-- 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>
- Bu
WiFiNetworkSuggestion
dinamik olarak değiştirilebilir:ArrayList<WifiNetworkSuggestion> list = new ArrayList<>(); list.add(new WifiNetworkSuggestion.Builder() .setSsid(WifiInfo.sanitizeSsid(ssid)) .setOemPrivate(true) .build()); mWifiManager.addNetworkSuggestions(list);
PANS ağlarına erişimi kısıtlama
Bir ağı OEM_PAID
veya OEM_PRIVATE
yetenekleriyle etiketlemek, o ağı kısıtlı bir ağ olarak işaretler. Kısıtlı ağlar yalnızca OEM'ler tarafından kontrol edilen CONNECTIVITY_USE_RESTRICTED_NETWORKS
iznine sahip uygulamalar tarafından kullanılabilir.
Bu izne sahip uygulamalar, uygulamaların açıkça talep etmesi koşuluyla kısıtlı ağları kullanabilir. Ancak bu uygulamalar varsayılan olarak kısıtlı ağlara sahip olmayacaktır. PANS aracılığıyla eşlenen uygulamalar, varsayılan olarak kısıtlanmış OEM ağlarına sahip olabilir ve bunları kullanmak için kısıtlı ağ iznine ihtiyaç duymaz. Böyle bir uygulamanın, PANS tarafından varsayılan ağı olarak atanan sınırlı bir OEM ağı varsa, uygulamanın bunu yapmayı seçmesi durumunda söz konusu OEM ağını açıkça talep etme olanağı da vardır.
Referans uygulamasını inceleyin
Kullanıcı hata ayıklamalı otomotiv yapılarında NetworkPreferenceApp
adlı bir referans uygulaması (kod dahil) sağlanır ve aşağıdakilerin nasıl yapılacağı gösterilir:
- PANS ölçümlerini kullanın.
- PANS politikasını ayarlayın.
- Cihaz için varsayılan bir politika ayarlayın.
- Bir politikayı temizleyin.
- Önyüklemede bir politika uygulayın.
- Sürücü Dikkat Dağıtma API'sini kullanın (bkz. Sürücü Dikkat Dağıtma Yönergeleri ).
- Wi-Fi'yi
OEM_PAID
veOEM_PRIVATE
ile dinamik olarak güncelleyin.
Şekil 3. Referans uygulaması
Metrikler
Veri kullanımıyla ilgili şeffaflığı kolaylaştırmak için, OEM_PAID
ve OEM_PRIVATE
ağ eşlemeleri üzerinden iletilen veri miktarına ilişkin ölçümler toplanır ve kullanıma sunulur.
Sorun giderme
Sorun giderme koşullarının çoğu, yanlış ağı kullanan bir uygulamadan (ağ bağlantısı yok) veya veri fazlalığından kaynaklanır. Hızlı çözümleri etkinleştirmek için:
- Bağlantı
dumpsys
uygulama başına etkin varsayılan ağların ve bunlarla ilişkili uygulamaların (PANS'tan eşlenen) bir listesini içerir. - Netd
dumpsys
UID IP ve güvenlik duvarı kurallarını içerir. - Netstats
dumpsys
uygulama başına PANS ölçümlerini içerir. Örneğin, hangi uygulamaların hangi OEM ağını kullandığı.
Tüm dumpsys
verilerine bir Android hata raporu oluşturularak ulaşılabilir.