Araçlar, hem OEM'ler hem de araç sahipleri tarafından istenen kullanım alanlarının artan listesini yönetmek için giderek daha fazla bağlantıya ihtiyaç duyuyor. Bu durum, veri ayak izinin ve ilgili maliyetlerin artmasına neden oluyor. 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 veri kullanımının hacmini ve maliyetini yönetirken aynı zamanda sağlam, güvenli ve bağlantılı bir araç deneyimi sunabilirsiniz. PANS:
- Yalnızca otomotiv cihazlarında kullanılabilen
ConnectivityManager'ya eklenen yeni bir API'den oluşur. - PANS ağ özelliklerinin dinamik olarak değiştirilmesini desteklemek için güncellenmiş bir kablosuz öneri API'si sunar (bkz. İnternet bağlantısı için kablosuz öneri API'si).
- Destekleyici metrikleri toplar.
- Referans uygulama sağlar.
Neden PANS?
PANS:
- Uygulama-ağ eşlemelerini dinamik olarak güncelleyin.
- Uygulamalarda değişiklik yapmadan uygulama düzeyinde yönlendirmeyi yönetin.
- Yalnızca OEM'in 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ı gerekmez.
- Kullanıcıya yönelik metrikler, OEM tarafından yönetilen ağlar için uygulama-ağ arası 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 uygulama-ağ eşlemelerindeki değişiklikler kullanıcılara bildirilir.
- Tüm kullanıcılara aynı ağ yapılandırması uygulanır.
Temel avantajlar
PANS, OEM'lere şu temel avantajları sunar:
- OEM'ler, kullanıcılar yerine ağ trafiği için ödeme yapabilir:
- Sistem güncellemeleri kullanıcıya ücretsiz olarak sunulabilir.
- Belirtilen uygulamaların ağ kullanımı, kullanıcıya ücretsiz olarak sağlanabilir.
- Telemetri ve diğer analizler, kullanıcıya herhangi bir maliyet getirmeden yönetilebilir.
- OEM'ler, kullanıcı tarafından ödenen bir veri planı olmasa bile önemli uygulamaların bağlı kalmasını sağlayabilir. Örneğin, haritalar, asistan (eller serbest sürüş) ve sistem güncellemeleri gibi güvenlikle ilgili kritik özellikler, kullanıcının veri planı olmasa bile çalışmaya devam eder.
- PANS, Android'deki ağ trafiği yönlendirmesiyle ilgili olarak daha 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.
PANS'yi uygulama
PANS'ı uygulamak için yeni bir ConnectivityManager API'si,
setOemNetworkPreference, 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 izniyle @SystemApi olarak açıklama eklenmiştir.
OemNetworkPreference
OemNetworkPreference, OEM_PAID ve OEM_PRIVATE üzerinde bir soyutlamadır. Paket adına göre NetworkCapabilities eşleme uygulamaları ağ tercihi ile yapılır. Ağ tercihleri, ağ hiyerarşilerine izin verir.
Örneğin, bir uygulamayı OEM_NETWORK_PREFERENCE_OEM_PAID tercihiyle eşlemek, uygulamaya atanan varsayılan ağların önceliğini şu şekilde belirler: Önce OEM_NETWORK_PREFERENCE_OEM_PAID ağı kullanılır. OEM_NETWORK_PREFERENCE_OEM_PAID ağı kullanılamıyorsa OEM_PAID ağı kullanılır. OEM_PAID ağı da kullanılamıyorsa sistemin varsayılan ağı kullanılır.UNMETEREDUNMETERED
OEM_PAIDÖncelikli olarak hem OEM hem de OEM dışı ağlarda yönlendirilebilen uygulamalar için kullanılır.OEM_PRIVATEÖncelikli olarak OEM uygulamaları için, kendilerine özel bir ağa erişmek amacıyla 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ğ tercihine eşlemek için
OemNetworkPreferencesseçeneğini kullanın. setOemNetworkPreferenceişleviniOemNetworkPreferencesnesnesiyle çağırın.- API'nin tamamlanmasını dinlemek için
Runnablearayü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);
Dikkat edilmesi gereken noktalar
PANS'ı uygularken aşağıdaki noktaları göz önünde bulundurun:
- Ağ tercihleri önyüklemeler arasında kalıcı olmaz ve her önyüklemede yeniden uygulanması gerekir.
- Bir uygulama için tercih oluşturmak üzere uygulamanın yüklenmesi gerekmez. Bu nedenle, kaldırılan uygulamaların ağ tercihleri proaktif olarak ayarlanabilir.
- Herhangi bir zamanda bir uygulama yalnızca tek bir ağ tercihine 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şılamanın yanı sıra mevcut uygulama kullanım alanlarını bozmamak için
NetworkRequestAPI gibi özel API'lerin kullanılmaya devam edilmesine de olanak tanır. Örneğin, bir uygulama yalnızca ölçülmemiş bir ağ üzerinden işlem yapmak istediğinde PANS, uygulamayı başka bir ağ kullanmaya zorlamaz.
Ağ yapılandırma
İlgili bir ağ tercihi kullanılırken OEM_PAID veya OEM_PRIVATE özelliklerine sahip bir ağın kullanılabilir olması gerekir. Android, Ethernet ve kablosuz ağlar için özellik yapılandırmasını destekler. Ethernet ağları için kaynak kaplaması config_ethernet_interfaces kullanabilirsiniz.
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.
Aşağıdaki örnekleri inceleyin:
config_ethernet_interfacesadlı bir kaynak yerleşimi şunları belirtir:- Yapılandırılacak arayüzün adı.
- İstenen
NetworkCapabilitiesdeğ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
WiFiNetworkSuggestiondinamik 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 CONNECTIVITY_USE_RESTRICTED_NETWORKS iznine sahip uygulamalar tarafından yalnızca kullanılabilir. Bu izin, OEM'ler tarafından kontrol edilir.
Bu izne sahip uygulamalar, açıkça istemeleri koşuluyla kısıtlanmış ağları kullanabilir. Ancak bu uygulamalar varsayılan olarak kısıtlanmış ağları kullanmaz. PANS üzerinden eşlenen uygulamalar, varsayılan olarak kısıtlanmış OEM ağlarına sahip olabilir ve bunları kullanmak için kısıtlanmış ağ izni gerekmez. Bu tür bir uygulamaya PANS tarafından varsayılan ağ olarak atanmış kısıtlanmış bir OEM ağı varsa uygulama isterse söz konusu OEM ağını açıkça isteyebilir.
Referans uygulamayı inceleyin
NetworkPreferenceApp adlı bir referans uygulaması (kod dahil) sağlanır.
Bu uygulama, kullanıcı hata ayıklama amaçlı otomotiv derlemelerinde aşağıdaki işlemleri nasıl yapacağınızı gösterir:
- PANS metriklerini kullanma
- PANS politikasını ayarlayın.
- Cihaz için varsayılan bir politika belirleyin.
- Bir politikayı temizleyin.
- Başlatma sırasında politika uygulama
- Sürücünün Dikkatini Dağıtma API'sini kullanın (Sürücünün Dikkatini Dağıtma Yönergeleri'ne bakın).
- Kablosuz bağlantıyı
OEM_PAIDveOEM_PRIVATEile dinamik olarak güncelleyin.
Metrikler
Veri kullanımıyla ilgili şeffaflığı artırmak için OEM_PAID ve OEM_PRIVATE ağ eşlemeleri üzerinden iletilen veri miktarıyla ilgili metrikler toplanır ve kullanıma sunulur.
Sorun giderme
Çoğu sorun giderme koşulu, 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ı
dumpsysbölümünde, etkin uygulama başına varsayılan ağların ve bunlarla ilişkili uygulamaların (PANS'den eşlenen) listesi yer alır. - 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ığı.
Android hata raporu oluşturarak tüm dumpsys verilerine erişebilirsiniz.