Araçlarda, hem OEM'ler hem de araç sahipleri tarafından istenen kullanım alanı listesinin giderek büyümesi nedeniyle bağlantıya olan ihtiyaç artıyor. Bu da veri ayak izinin ve ilişkili maliyetlerin artmasına neden oluyor. Belirtilen uygulamaların trafiğini OEM tarafından ödeme yapılan ağlara yönlendirmek için uygulama başına ağ seçimi (PANS) özelliğini kullanın.
PANS ile hem veri kullanımının hacmini ve maliyetini yönetebilir hem de güçlü, güvenli ve bağlı bir araç deneyimi sunabilirsiniz. PANS:
- Yalnızca otomotiv cihazlarda kullanılabilen
ConnectivityManager
'e eklenen yeni bir API'den oluşur. - Dinamik olarak değişen PANS ağ özelliklerine destek eklemek için güncellenmiş bir kablosuz öneri API'si (İnternet bağlantısı için kablosuz öneri API'si bölümüne bakın) sağlar.
- Destekleyici metrikleri toplar.
- Referans uygulama sağlar.
Neden PANS?
PANS şunları yapabilir:
- Uygulama ile ağ eşlemelerini dinamik olarak güncelleyin.
- Uygulamalarda değişiklik yapmadan uygulama düzeyinde yönlendirmeyi yönetin.
- Yalnızca OEM'nin izin verdiği uygulamalar eşlenen OEM ağlarına erişebilir.
- Uygulama geliştiricilerin bu özelliği uygulamak için herhangi bir değişiklik yapmasına gerek yoktur.
- Kullanıcılara yönelik metrikler, 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 alanları veya yetkisiz uygulamalar aracılığıyla kötüye kullanılamaz.
- PANS uygulamadan ağa eşlemelerinde yapılan değişiklikler kullanıcılara bildirilir.
- Tüm kullanıcılar için aynı ağ yapılandırması uygulanır.
Temel avantajlar
PANS, OEM'lere aşağıdaki temel avantajları sunar:
- 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 analizler, kullanıcıya maliyet yansıtılmaksızın 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 (ellerinizi kullanmadan 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 ayrıntılı kontrol sağlar. Örneğin, OEM'ler uygulama düzeyindeki trafiğin yönlendirilmesi için mantıksal bir ağ topolojisini optimum şekilde tanımlayabilir.
Şekil 1. PANS çerçevesi
PANS'i uygulama
PANS'i uygulamak için yeni bir ConnectivityManager
API (setOemNetworkPreference
) sağlanır.
Bu yeni API, uygulamaları bir OemNetworkPreference
ile eşler.
Bu API yalnızca otomotiv cihazlar tarafından kullanılabilir ve yeni bir signature
izniyle @SystemApi
olarak ek açıklamaya sahiptir.
Şekil 2. PANS'i uygulama
OemNetworkPreference
OemNetworkPreference
, OEM_PAID
ve OEM_PRIVATE
NetworkCapabilities
üzerinde bir soyutlamadır. Uygulamaları paket adına göre ağ tercihine eşler. Ağ tercihleri, ağ hiyerarşileri oluşturmanıza olanak tanır.
Örneğin, bir uygulamanın OEM_NETWORK_PREFERENCE_OEM_PAID
tercihiyle eşlenmesi, uygulamaya atanan varsayılan ağların aşağıdaki önceliğine neden olur: Öncelikle bir UNMETERED
ağı kullanın, UNMETERED
kullanılamıyorsa bir OEM_PAID
ağı kullanın ve OEM_PAID
kullanılamıyorsa sistem varsayılan ağını kullanın.
OEM_PAID
Öncelikli olarak hem OEM hem de OEM dışı ağlarda yönlendirilebilecek uygulamalar için kullanılır.OEM_PRIVATE
Genellikle OEM uygulamalarının kendilerine özel 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ğırma
PANS API'lerini kullanmak için:
- Bir uygulamayı ağ tercihiyle eşlemek için
OemNetworkPreferences
simgesini kullanın. OemNetworkPreferences
nesnesini kullanaraksetOemNetworkPreference
'ü çağırın.- API'nin tamamlanmasını dinlemek için
Runnable
arayüzünü kullanın.
Örnek:
// 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);
Dikkat edilmesi gereken noktalar
PANS'i uygularken aşağıdaki noktaları göz önünde bulundurun:
- Ağ tercihleri, önyüklemeler arasında korunmaz ve her önyüklemede yeniden uygulanması gerekir.
- Bir uygulama için tercih oluşturmak için uygulamanın yüklü olması gerekmez. Bu nedenle, kaldırılan uygulamaların ağ tercihleri proaktif olarak ayarlanabilir.
- Bir uygulama, herhangi bir zamanda yalnızca tek bir ağ tercihiyle eşlenebilir.
- Ağ tercihleri, bir uygulamanın varsayılan ağını ayarlamak için kullanılır. Bu ağ, uygulama özel API'lerden biri aracılığıyla kullanmak istediği ağları belirtmediğinde kullanılır. Bu, bağlantı ihtiyaçlarının büyük bir kısmını karşılamakla kalmaz, aynı zamanda mevcut uygulama kullanım alanlarını bozmamak için
NetworkRequest
API gibi özel API'lerin kullanılmaya devam edilmesine de olanak tanır. Örneğin, bir uygulama yalnızca sınırsız bir ağ üzerinden işlem yapmak istediğinde PANS, uygulamayı başka bir ağ kullanmaya zorlamaz.
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 kablosuz ağların özelliklerinin yapılandırılması için destek sağlar. Ethernet ağları için config_ethernet_interfaces
kaynak yer paylaşımını kullanabilirsiniz.
Bu değer 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.
Aşağıdaki örnekleri inceleyin:
config_ethernet_interfaces
adlı bir kaynak yer paylaşımı ş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
özellikleriyle etiketlemek, o ağı kısıtlanmış ağ olarak işaretler. Kısıtlanmış 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, açıkça talep etmeleri koşuluyla kısıtlanmış ağları kullanabilir. Ancak bu uygulamalar varsayılan olarak kısıtlanmış ağları almaz. PANS üzerinden eşlenen uygulamalarda varsayılan olarak kısıtlanmış OEM ağları ayarlanabilir ve bu ağları kullanmak için kısıtlanmış ağ izni gerekmez. Bu tür bir uygulamanın varsayılan ağı olarak PANS tarafından atanmış kısıtlanmış bir OEM ağı varsa uygulama, isterse söz konusu OEM ağını açıkça isteyebilir.
Referans uygulamayı inceleme
Kullanıcı hata ayıklama otomotiv derlemelerinde NetworkPreferenceApp
adlı bir referans uygulama (kod dahil) sağlanır ve aşağıdakilerin nasıl yapılacağı gösterilir:
- PANS metriklerini kullanma
- PANS politikasını ayarlayın.
- Cihaz için varsayılan bir politika ayarlayın.
- Bir politikayı temizleyin.
- Açılışta politika uygulama
- Driver Distraction API'yi kullanın (Sürücünün Dikkatini Dağıtan Unsurlar Yönergeleri'ne bakın).
OEM_PAID
veOEM_PRIVATE
ile kablosuz bağlantıyı dinamik olarak güncelleyin.
Şekil 3. Referans uygulama
Metrikler
Veri kullanımıyla ilgili şeffaflığı kolaylaştırmak için OEM_PAID
ve OEM_PRIVATE
ağ eşlemeleri üzerinden aktarılan veri miktarıyla ilgili metrikler toplanır ve kullanılabilir hale getirilir.
Sorun giderme
Sorun giderme koşullarının çoğu, uygulamanın yanlış ağı kullanmasından (ağ bağlantısı yok) veya veri aşımından kaynaklanır. Hızlı çözümleri etkinleştirmek için:
- Bağlantı
dumpsys
, uygulama başına etkin varsayılan ağların ve bu ağlarla ilişkili uygulamaların (PANS'den eşlenen) listesini içerir. - Netd
dumpsys
, UID IP ve güvenlik duvarı kurallarını içerir. - Netstats
dumpsys
, uygulama başına PANS metriklerini içerir. Örneğin, hangi uygulamaların hangi OEM ağını kullandığı.
Tüm dumpsys
verileri, Android hata raporu oluşturarak kullanılabilir.