Uygulama Başına Ağ Seçimi (PANS)

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:

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

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

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