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

Araçlar gittikçe büyüyen bir listeyi yönetmek için bağlantıya gittikçe daha fazla başvuruyor. Bu da Android'in hem OEM'lerin hem de araç sahiplerinin talep ettiği kullanım alanlarıyla veri ayak izi ve ilişkili maliyetler Uygulama başına ağ seçimini kullanın (PANS) özelliği ile ödeme yapılan ağlardaki belirtilen uygulamaların trafiğini yönlendirme satın alabilirsiniz.

PANS ile, veri kullanım hacmini ve maliyetini aynı anda yönetebilirsiniz. güçlü, güvenli ve bağlantılı bir araç deneyimi sunmayı amaçlar. Kalıcı Hesap Numarası (PAN):

  • Kullanılabilir ConnectivityManager API'sine eklenen yeni bir API'den oluşur yalnızca otomotiv cihazlarında kullanılabilir.
  • Güncellenmiş bir Wi-Fi Öneri API'si sağlar (bkz. İnternet bağlantısı için kablosuz bağlantı öneri API'si) dinamik olarak değişen PANS ağ özellikleri için destek içerir.
  • Destekleyici metrikleri toplar.
  • Referans uygulama sağlar.

Neden PANS?

PAN'ler ş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ı gerekmez.
  • Kullanıcıya yönelik metrikler, yönetilen OEM uygulamaları için uygulamadan ağa veri kullanımını takip eder ağlar.
  • Ağ erişimi güvenlidir ve kasıtsız kullanım alanları ya da e-postalar yoluyla izin vermez.
  • PANS uygulamalardan 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 şu temel avantajları sağlar:

  1. OEM'ler, ağ trafiği için kullanıcılar yerine ö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 ücretsiz olarak yönetilebilir.
  2. OEM'ler, önemli uygulamaların bir bağlantı olmadan bile bağlı kalmasını sağlayabilir. (kullanıcı tarafından ödenen veri planı) Örneğin, Haritalar, Asistan gibi güvenlik açısından kritik özellikler (eller serbest sürüş) ve sistem güncellemeleri, bu cihazlarda bile çalışmaya devam eder. Kullanıcının veri planı yoksa
  3. PANS, ağ trafiğine özel ek kontrol ayrıntı düzeyi sağlar yönlendirmelerine başladı. Örneğin, OEM'ler en iyi şekilde mantıklı bir ağ en iyi uygulamaları paylaşacağız.

1. Şekil. PANS çerçevesi

PAN'leri uygulama

Yeni bir ConnectivityManager API olan PANS'yi uygulamak için setOemNetworkPreference sağlandı. Bu yeni API, uygulamaları bir OemNetworkPreference ile eşler. Bu API yalnızca otomotiv cihazlarında kullanılabilir ve Yeni signature izniyle @SystemApi.

Şekil 2. PAN'leri uygulama

OemAğ Tercihi

OemNetworkPreference, OEM_PAID ile ilgili bir soyutlama ve Paket adına göre OEM_PRIVATE NetworkCapabilities eşleme uygulaması ağ tercihine ekleyebilirsiniz. Ağ tercihleri, ağ hiyerarşilerine izin verir. Örneğin, bir uygulamayı OEM_NETWORK_PREFERENCE_OEM_PAID tercihiyle eşleme bir uygulamaya atanmış varsayılan ağların aşağıdaki önceliği olur: Önce UNMETERED ağı, UNMETERED kullanılamıyorsa OEM_PAID ağını ve OEM_PAID kullanılamıyorsa sistemi kullanın varsayılan ağdır.

  • OEM_PAID Öncelikle her iki cihazda da yönlendirilebilen uygulamalar için kullanılır OEM ve OEM olmayan ağlar.
  • OEM_PRIVATE Özellikle OEM uygulamaları için bir bir iletişim ağı oluşturabilirsiniz.
/**
* 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ı ağ tercihiyle eşlemek için OemNetworkPreferences düğmesini kullanın.
  2. OemNetworkPreferences numaralı telefonu kullanarak setOemNetworkPreference adlı kişiyi arayın nesnesini tanımlayın.
  3. API'nin tamamlandığı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

PAN'ları uygularken aşağıdaki noktaları göz önünde bulundurun:

  • Ağ tercihleri, başlatmalar genelinde kalıcı değildir ve tekrar uygulanır.
  • Bir uygulamayla ilgili tercih oluşturmak için uygulamanın yüklenmesi gerekmez. Bu nedenle, ağ Kaldırılan uygulamalarla ilgili tercihler proaktif olarak ayarlanabilir.
  • Bir uygulama herhangi bir zamanda 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 hangi ağları kullanmak istediğini belirtmediğinde kullanılan ağ olduğunu öğreneceğiz. Bu, bağlantı ihtiyaçlarının büyük çoğunluğunu sağlamakla kalmaz, aynı zamanda ayrıca NetworkRequest API gibi özel API'lerin sürekli kullanımına da olanak tanır. Bu sayede mevcut uygulama kullanım alanlarını bozmadan devam edebilir. Örneğin, bir uygulama yalnızca bir sınırsız bir ağ üzerinde işlem yaparsanız PANS, onu başka bir ağ kullanmaya zorlamaz.

Ağ yapılandırma

OEM_PAID veya OEM_PRIVATE bulunan bir ağ ilgili ağ tercihi kullanılırken tüm özellikler kullanılabilir olmalıdır. Android Ethernet ve kablosuz ağlara yönelik özelliklerin yapılandırılması için destek sunar. Örneğin, Ethernet ağları için kaynak yer paylaşımı kullanabilirsiniz, config_ethernet_interfaces. Bu, derleme sırasında ayarlanır.

WifiNetworkSuggestion API, kablosuz bağlantıda yeni Android 12 API'leri, setOemPaid(Boolean) ve setOemPrivate(Boolean). Bu, çalışma zamanında değiştirilebilir.

Aşağıdaki örnekleri göz önünde bulundurun:

  1. 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>
      
  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ıtla

Bir ağı OEM_PAID veya OEM_PRIVATE ile etiketleme özellikleri, bu ağı kısıtlı ağ olarak işaretler. Kısıtlanmış ağlar yalnızca OEM'ler tarafından kontrol edilen CONNECTIVITY_USE_RESTRICTED_NETWORKS izni.

Bu izne sahip uygulamalar, uygulamaların açıkça istemesi şartıyla kısıtlanmış ağları kullanabilir yapın. Ancak bu uygulamalar, kısıtlanmış ağları varsayılan olarak kullanmaz. Uygulamalar PANS aracılığıyla eşlenen kısıtlanmış OEM ağları varsayılan olarak ayarlanmış olabilir ve kısıtlı ağ iznine sahip olmanız gerekir. Bu tür bir uygulamada PANS tarafından varsayılan ağ olarak atanan OEM ağı; Uygulama istenirse söz konusu OEM ağını açıkça talep etme.

Referans uygulamayı inceleyin

NetworkPreferenceApp adlı bir referans uygulama (kod dahil) sağlanmış kullanıcı hata ayıklama otomotiv derlemelerinde aşağıdakilerin nasıl yapıldığını gösterir:

  • PANS metriklerini tüket.
  • PANS politikası belirleyin.
  • Cihaz için varsayılan bir politika ayarlayın.
  • Politikayı temizleyin.
  • Açılışta politika uygula.
  • Driver Distraction API'yi kullanma (Sürücü Dikkatini Dağıtma Kuralları'nı inceleyin).
  • Kablosuz ağı OEM_PAID ve OEM_PRIVATE ile dinamik olarak güncelleyin.

Şekil 3. Referans uygulaması

Metrikler

Veri kullanımına dair şeffaflığı kolaylaştırmak için metrikler, ölçüm ve veri işleme miktarına bağlı olarak mevcut taleplerin OEM_PAID ve OEM_PRIVATE ağ eşlemeleri.

Sorun giderme

Çoğu sorun giderme koşulu, yanlış ağı kullanan bir uygulamadan kaynaklanır (ağ bağlantısı yok) veya veri aşımı olması anlamına gelir. Hızlı çözümleri etkinleştirmek için:

  • dumpsys bağlantısı, etkin olanların listesini içerir Her uygulama için varsayılan ağlar ve bunlarla ilişkilendirilen uygulamalar (PANS'den eşlenir).
  • Net dumpsys, UID IP'si 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 verilerine Android hata raporu oluşturarak erişebilirsiniz.