Araçlar, hem OEM'ler hem de araç sahipleri tarafından talep edilen ve büyüyen kullanım senaryoları listesini yönetmek için giderek artan bir şekilde bağlantıya güveniyor ve bu da artan veri ayak izi ve ilgili maliyetlerle sonuçlanıyor. OEM tarafından ödenen ağlarda belirtilen uygulamaların trafiğini yönlendirmek için Uygulama Başına Ağ Seçimi (PANS) özelliğini kullanın.
PANS ile aynı anda sağlam, güvenli ve bağlantılı bir araç deneyimi sağlarken veri kullanımının hacmini ve maliyetini yönetebilirsiniz. tavalar:
- Yalnızca otomotiv cihazlarında kullanılabilen
ConnectivityManager
eklenen yeni bir API'den oluşur. - Dinamik olarak değişen PANS ağ özelliklerini desteklemek için güncellenmiş bir Wi-Fi öneri API'si sağlar ( İnternet bağlantısı için Wi-Fi öneri API'sine bakın ).
- Destekleyici metrikleri 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 tarafından izin verilen uygulamalar erişebilir.
- Uygulama geliştiricilerin 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 uygulama-ağ eşlemelerinde yapılan değişiklikler kullanıcılara iletilir.
- Aynı ağ yapılandırması tüm kullanıcılara 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 ücretsiz olarak sağlanabilir.
- Belirtilen uygulamaların ağ kullanımı, kullanıcıya ücretsiz olarak sağlanabilir.
- Telemetri ve diğer analitikler, kullanıcıya hiçbir ücret ödemeden yönetilebilir.
- OEM'ler, kullanıcı tarafından ödenen bir veri planı olmadan bile kritik uygulamaların bağlı 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'de ağ trafiği yönlendirmesine özgü ek denetim ayrıntı düzeyi sağlar. Örneğin, OEM'ler uygulama düzeyinde trafiğin yönlendirilmesi için en uygun şekilde mantıksal bir ağ topolojisi tanımlayabilir.
Şekil 1 . PANS çerçevesi
PANS'ı Uygulamak
PANS'ı uygulamak için setOemNetworkPreference
adlı yeni bir ConnectivityManager
API sağlanır. Bu yeni API, uygulamaları bir OemNetworkPreference
ile eşler. Bu API yalnızca otomotiv cihazlarında kullanılabilir ve yeni bir signature
iznine sahip bir @SystemApi
olarak açıklanır.
Şekil 2. PANS'ı Uygulamak
OemAğ Tercihi
OemNetworkPreference
, uygulamaları paket adına göre bir ağ tercihiyle 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 şu önceliğine neden olur: önce bir UNMETERED
ağı kullanın, UNMETERED
mevcut değilse bir OEM_PAID
ağı kullanın ve OEM_PAID
mevcut değilse sistemi kullanın varsayılan ağ.
-
OEM_PAID
Öncelikli olarak hem OEM hem de OEM olmayan ağlarda yönlendirilebilen uygulamalar için kullanılır. -
OEM_PRIVATE
Öncelikli olarak OEM uygulamalarının kendilerine ayrılmış bir ağa erişim kazanması 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ğırma
PANS API'lerini kullanmak için:
- Bir uygulamayı bir ağ tercihiyle eşleştirmek için
OemNetworkPreferences
kullanın. -
OemNetworkPreferences
nesnesiylesetOemNetworkPreference
çağırın. - API'nin tamamlanmasını dinlemek için
Runnable
arabirimini 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, önyüklemeler arasında kalıcı değildir ve her önyüklemede yeniden uygulanması gerekir.
- Bir uygulama için tercih oluşturmak için yüklenmesi gerekmez. Bu nedenle, kaldırılan uygulamalar için 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 uygulama özel API'lerden biri aracılığıyla hangi ağları kullanmak istediğini belirtmediğinde kullanılan ağdır. Bu, 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 izin verir. Örneğin, bir uygulama yalnızca ölçülmemiş bir ağ üzerinden işlem yapmak istediğinde, PANS onu başka bir ağ kullanmaya zorlamaz.
Bir ağı yapılandırma
Karşılık gelen bir ağ tercihi kullanılırken OEM_PAID
veya OEM_PRIVATE
yeteneklerine sahip bir ağ mevcut olmalıdır. Android, Ethernet ve Wi-Fi ağları için yeteneklerin yapılandırılması için destek sağlar. Ethernet ağları için bir kaynak yerleşimi kullanabilirsiniz, config_ethernet_interfaces
. Bu derleme zamanında ayarlanır.
Wi-Fi için WifiNetworkSuggestion
API'si yeni Android 12 API'leri setOemPaid(Boolean)
ve setOemPrivate(Boolean)
ile kullanılabilir. Bu, çalışma zamanında değiştirilebilir.
Şu örnekleri düşünün:
-
config_ethernet_interfaces
adlı bir kaynak yerleşimi şunları belirtir:- Yapılandırılacak arayüzün adı.
- İstenen
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ıtlanmış ağlar almaz. PANS aracılığıyla eşlenen uygulamalar, varsayılan olarak ayarlanmış kısıtlı OEM ağlarına sahip olabilir ve bunları kullanmak için kısıtlı ağ iznine ihtiyaç duymaz. Böyle bir uygulama, PANS tarafından varsayılan ağı olarak atanan kısıtlı bir OEM ağına sahip olduğunda, uygulama bunu seçerse, söz konusu OEM ağını açıkça talep etme yeteneğine de sahiptir.
Referans uygulamasını gözden geçirme
Kullanıcı tarafından hata ayıklanan otomotiv yapılarında NetworkPreferenceApp
adlı bir referans uygulaması (kod dahil) sağlanır ve aşağıdakilerin nasıl yapılacağını gösterir:
- PANS metriklerini tüketin.
- PANS politikasını ayarlayın.
- Cihaz için varsayılan bir politika belirleyin.
- Bir politikayı temizleyin.
- Önyüklemede bir ilke uygulayın.
- Sürücü Dikkat Dağıtma API'sini kullanın (bkz. Sürücü Dikkat Dağıtma Yönergeleri ).
-
OEM_PAID
veOEM_PRIVATE
ile Wi-Fi'yi 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 metrikler toplanır ve kullanıma sunulur.
Sorun giderme
Çoğu sorun giderme koşulu, yanlış ağ kullanan bir uygulamadan (ağ bağlantısı yok) veya veri fazlalığından kaynaklanır. Hızlı çözünürlükleri etkinleştirmek için:
- Bağlantı dökümleri, uygulama başına etkin varsayılan ağların ve bunlarla ilişkili uygulamaların (
dumpsys
) 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 erişilebilir.