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

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:

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

  1. Bir uygulamayı ağ tercihine eşlemek için OemNetworkPreferences seçeneğini kullanın.
  2. setOemNetworkPreference işlevini OemNetworkPreferences nesnesiyle ç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);

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 NetworkRequest API 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:

  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 ö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_PAID ve OEM_PRIVATE ile 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ı dumpsys bö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.