Uygulama başına ağ seçimi (PANS),Uygulama başına ağ seçimi (PANS)

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:

  1. 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.
  2. 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.
  3. 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:

  1. Bir uygulamayı bir ağ tercihiyle eşlemek için OemNetworkPreferences kullanın.
  2. OemNetworkPreferences nesnesiyle setOemNetworkPreference öğesini çağırın.
  3. 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:

  1. 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>
      
  2. 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 ve OEM_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.