प्रति-एप्लिकेशन नेटवर्क चयन (PANS)

ओईएम और वाहन मालिकों दोनों द्वारा अनुरोधित उपयोग के मामलों की बढ़ती सूची को प्रबंधित करने के लिए वाहन तेजी से कनेक्टिविटी पर निर्भर हो रहे हैं, जिसके परिणामस्वरूप डेटा फ़ुटप्रिंट और संबंधित लागत में वृद्धि हुई है। OEM द्वारा भुगतान किए गए नेटवर्क पर निर्दिष्ट ऐप्स के ट्रैफ़िक को रूट करने के लिए प्रति-एप्लिकेशन नेटवर्क चयन (PANS) सुविधा का उपयोग करें।

PANS के साथ, आप एक मजबूत, सुरक्षित और कनेक्टेड कार अनुभव प्रदान करते हुए डेटा उपयोग की मात्रा और लागत का प्रबंधन कर सकते हैं। पैन:

  • ConnectivityManager में जोड़ा गया एक नया एपीआई शामिल है जो केवल ऑटोमोटिव उपकरणों के लिए उपलब्ध है।
  • गतिशील रूप से बदलते PANS नेटवर्क क्षमताओं के लिए समर्थन शामिल करने के लिए एक अद्यतन वाई-फाई सुझाव एपीआई ( इंटरनेट कनेक्टिविटी के लिए वाई-फाई सुझाव एपीआई देखें) प्रदान करता है।
  • सहायक मेट्रिक्स एकत्रित करता है.
  • एक संदर्भ ऐप प्रदान करता है.

PANS क्यों?

पैन स्कैन:

  • ऐप-टू-नेटवर्क मैपिंग को गतिशील रूप से अपडेट करें।
  • ऐप्स में बदलाव किए बिना ऐप-स्तरीय रूटिंग प्रबंधित करें।
  • केवल OEM-अनुमत ऐप्स ही मैप किए गए OEM नेटवर्क तक पहुंच सकते हैं।
  • इस सुविधा को लागू करने के लिए ऐप डेवलपर्स को कोई बदलाव करने की आवश्यकता नहीं है।
  • उपयोगकर्ता-सामना करने वाले मेट्रिक्स OEM प्रबंधित नेटवर्क के लिए ऐप-टू-नेटवर्क डेटा उपयोग को ट्रैक करते हैं।
  • नेटवर्क पहुंच सुरक्षित है और अनपेक्षित उपयोग के मामलों या अनधिकृत ऐप्स के माध्यम से इसका दुरुपयोग नहीं किया जा सकता है।
  • PANS ऐप-टू-नेटवर्क मैपिंग में परिवर्तन उपयोगकर्ताओं को सूचित किए जाते हैं।
  • सभी उपयोगकर्ताओं पर समान नेटवर्क कॉन्फ़िगरेशन लागू किया जाता है.

मुख्य लाभ

PANS OEM को ये मुख्य लाभ प्रदान करता है:

  1. OEM उपयोगकर्ताओं के बजाय नेटवर्क ट्रैफ़िक के लिए भुगतान कर सकते हैं:
    • उपयोगकर्ता को बिना किसी लागत के सिस्टम अपडेट प्रदान किया जा सकता है।
    • निर्दिष्ट ऐप्स का नेटवर्क उपयोग उपयोगकर्ता को बिना किसी कीमत के प्रदान किया जा सकता है।
    • टेलीमेट्री और अन्य एनालिटिक्स को उपयोगकर्ता के लिए बिना किसी लागत के प्रबंधित किया जा सकता है।
  2. ओईएम यह सुनिश्चित कर सकते हैं कि महत्वपूर्ण ऐप्स उपयोगकर्ता द्वारा भुगतान किए गए डेटा प्लान के बिना भी जुड़े रहें। उदाहरण के लिए, मानचित्र, सहायक (हैंड्स-फ़्री ड्राइविंग) और सिस्टम अपडेट जैसी सुरक्षा-महत्वपूर्ण सुविधाएँ तब भी कार्य करती रहती हैं, जब उपयोगकर्ता के पास कोई डेटा प्लान नहीं होता है।
  3. PANS एंड्रॉइड में नेटवर्क ट्रैफ़िक रूटिंग के लिए विशिष्ट नियंत्रण की अतिरिक्त विस्तृतता प्रदान करता है। उदाहरण के लिए, ओईएम ऐप-स्तरीय ट्रैफ़िक के रूटिंग के लिए लॉजिकल नेटवर्क टोपोलॉजी को बेहतर ढंग से परिभाषित कर सकते हैं।

आकृति 1 । PANS ढाँचा

पैन लागू करें

PANS को लागू करने के लिए, एक नया ConnectivityManager API, setOemNetworkPreference प्रदान किया गया है। यह नया एपीआई ऐप्स को OemNetworkPreference पर मैप करता है। यह एपीआई केवल ऑटोमोटिव उपकरणों के लिए उपलब्ध है और इसे नई signature अनुमति के साथ @SystemApi के रूप में एनोटेट किया गया है।

चित्र 2. पैन लागू करें

OemNetworkPreference

OemNetworkPreference OEM_PAID और OEM_PRIVATE NetworkCapabilities पर पैकेज नाम के आधार पर ऐप्स को नेटवर्क प्राथमिकता पर मैप करने का एक सार है। नेटवर्क प्राथमिकताएँ नेटवर्क पदानुक्रम की अनुमति देती हैं। उदाहरण के लिए, किसी ऐप को OEM_NETWORK_PREFERENCE_OEM_PAID प्राथमिकता पर मैप करने से ऐप को दी गई डिफ़ॉल्ट नेटवर्क की निम्नलिखित प्राथमिकता प्राप्त होती है: पहले UNMETERED नेटवर्क का उपयोग करें, यदि UNMETERED उपलब्ध नहीं है तो OEM_PAID नेटवर्क का उपयोग करें, और यदि OEM_PAID उपलब्ध नहीं है, तो सिस्टम डिफ़ॉल्ट का उपयोग करें नेटवर्क।

  • OEM_PAID मुख्य रूप से उन ऐप्स के लिए उपयोग किया जाता है जिन्हें OEM और गैर-OEM दोनों नेटवर्क पर रूट किया जा सकता है।
  • OEM_PRIVATE मुख्य रूप से OEM ऐप्स के लिए उनके लिए समर्पित नेटवर्क तक पहुंच प्राप्त करने के लिए उपयोग किया जाता है।
/**
* 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 को कॉल करें

PANS API का उपयोग करने के लिए:

  1. किसी ऐप को नेटवर्क प्राथमिकता पर मैप करने के लिए OemNetworkPreferences उपयोग करें।
  2. OemNetworkPreferences ऑब्जेक्ट के साथ setOemNetworkPreference कॉल करें।
  3. एपीआई पूर्णता सुनने के लिए Runnable इंटरफ़ेस का उपयोग करें।

उदाहरण के लिए:

// 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);

विचार

जब आप PANS लागू करते हैं, तो निम्नलिखित बातों को ध्यान में रखें:

  • नेटवर्क प्राथमिकताएँ सभी बूटों पर कायम नहीं रहती हैं और इन्हें प्रत्येक बूट पर पुनः लागू करने की आवश्यकता होती है।
  • किसी ऐप के लिए प्राथमिकता बनाने के लिए, इसे इंस्टॉल करने की आवश्यकता नहीं है। इसलिए, अनइंस्टॉल किए गए ऐप्स के लिए नेटवर्क प्राथमिकताएं सक्रिय रूप से सेट की जा सकती हैं।
  • किसी भी समय, किसी ऐप को केवल एकल नेटवर्क प्राथमिकता पर मैप किया जा सकता है।
  • किसी ऐप का डिफ़ॉल्ट नेटवर्क सेट करने के लिए नेटवर्क प्राथमिकताओं का उपयोग किया जाता है। यह वह नेटवर्क है जिसका उपयोग तब किया जाता है जब किसी ऐप ने यह निर्दिष्ट नहीं किया है कि वह किसी विशेष एपीआई के माध्यम से किस नेटवर्क का उपयोग करना चाहता है। यह न केवल अधिकांश कनेक्टिविटी आवश्यकताओं को कवर करता है, बल्कि यह NetworkRequest API जैसे विशेष एपीआई के निरंतर उपयोग की भी अनुमति देता है ताकि मौजूदा ऐप उपयोग-मामलों में बाधा न आए। उदाहरण के लिए, जब कोई ऐप केवल बिना मीटर वाले नेटवर्क पर कोई ऑपरेशन करना चाहता है, तो PANS उसे किसी अन्य नेटवर्क का उपयोग करने के लिए बाध्य नहीं करेगा।

एक नेटवर्क कॉन्फ़िगर करें

संबंधित नेटवर्क प्राथमिकता का उपयोग करते समय OEM_PAID या OEM_PRIVATE क्षमताओं वाला नेटवर्क उपलब्ध होना चाहिए। एंड्रॉइड ईथरनेट और वाई-फाई नेटवर्क के लिए क्षमताओं के कॉन्फ़िगरेशन के लिए समर्थन प्रदान करता है। ईथरनेट नेटवर्क के लिए, आप संसाधन ओवरले, config_ethernet_interfaces का उपयोग कर सकते हैं। इसे संकलन समय पर सेट किया गया है।

वाई-फ़ाई के लिए, WifiNetworkSuggestion API का उपयोग नए Android 12 API, setOemPaid(Boolean) और setOemPrivate(Boolean) के साथ किया जा सकता है। इसे रनटाइम पर बदला जा सकता है.

इन उदाहरणों पर विचार करें:

  1. config_ethernet_interfaces नामक संसाधन ओवरले निर्दिष्ट करता है:
    • कॉन्फ़िगर करने के लिए इंटरफ़ेस का नाम.
    • वांछित NetworkCapabilities मान.
      <!-- 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. इस WiFiNetworkSuggestion गतिशील रूप से बदला जा सकता है:
    ArrayList<WifiNetworkSuggestion> list = new ArrayList<>();
    list.add(new WifiNetworkSuggestion.Builder()
                   .setSsid(WifiInfo.sanitizeSsid(ssid))
                   .setOemPrivate(true)
                   .build());
    mWifiManager.addNetworkSuggestions(list);
    

PANS नेटवर्क तक पहुंच प्रतिबंधित करें

किसी नेटवर्क को OEM_PAID या OEM_PRIVATE क्षमताओं के साथ टैग करना उस नेटवर्क को प्रतिबंधित नेटवर्क के रूप में चिह्नित करता है। प्रतिबंधित नेटवर्क का उपयोग केवल उन ऐप्स द्वारा किया जा सकता है जिनके पास CONNECTIVITY_USE_RESTRICTED_NETWORKS अनुमति है, जो OEM द्वारा नियंत्रित होती है।

इस अनुमति वाले ऐप्स प्रतिबंधित नेटवर्क का उपयोग कर सकते हैं , बशर्ते ऐप्स स्पष्ट रूप से उनसे अनुरोध करें । हालाँकि, इन ऐप्स को डिफ़ॉल्ट रूप से प्रतिबंधित नेटवर्क नहीं मिलेंगे। PANS के माध्यम से मैप किए गए ऐप्स में प्रतिबंधित OEM नेटवर्क उनके डिफ़ॉल्ट के रूप में सेट हो सकते हैं और उन्हें उपयोग करने के लिए प्रतिबंधित नेटवर्क अनुमति की आवश्यकता नहीं होगी। जब ऐसे ऐप में एक प्रतिबंधित OEM नेटवर्क होता है जिसे PANS द्वारा अपने डिफ़ॉल्ट नेटवर्क के रूप में निर्दिष्ट किया जाता है, तो यदि ऐप ऐसा करना चुनता है तो इसमें उक्त OEM नेटवर्क के लिए स्पष्ट रूप से अनुरोध करने की क्षमता भी होती है।

संदर्भ ऐप की समीक्षा करें

उपयोगकर्ता-डीबग ऑटोमोटिव बिल्ड में NetworkPreferenceApp नाम का एक संदर्भ ऐप (कोड सहित) प्रदान किया गया है और यह दर्शाता है कि:

  • PANS मेट्रिक्स का उपभोग करें.
  • PANS नीति निर्धारित करें.
  • डिवाइस के लिए एक डिफ़ॉल्ट नीति सेट करें।
  • एक नीति साफ़ करें.
  • बूट पर एक नीति लागू करें.
  • ड्राइवर व्याकुलता एपीआई का उपयोग करें ( ड्राइवर व्याकुलता दिशानिर्देश देखें)।
  • OEM_PAID और OEM_PRIVATE के साथ वाई-फाई को गतिशील रूप से अपडेट करें।

चित्र 3. संदर्भ ऐप

मेट्रिक्स

डेटा उपयोग के आसपास पारदर्शिता की सुविधा के लिए, OEM_PAID और OEM_PRIVATE नेटवर्क मैपिंग पर प्रसारित डेटा की मात्रा के संबंध में मैट्रिक्स एकत्र और उपलब्ध कराए जाते हैं।

समस्या निवारण

अधिकांश समस्या निवारण स्थितियाँ या तो गलत नेटवर्क (कोई नेटवर्क कनेक्टिविटी नहीं) या डेटा ओवरएज का उपयोग करने वाले ऐप से उत्पन्न होती हैं। त्वरित समाधान सक्षम करने के लिए:

  • कनेक्टिविटी dumpsys सक्रिय प्रति-ऐप डिफ़ॉल्ट नेटवर्क और उनके संबंधित ऐप्स (PANS से ​​मैप) की एक सूची शामिल है।
  • नेटड dumpsys में यूआईडी आईपी और फ़ायरवॉल नियम शामिल हैं।
  • नेटस्टैट dumpsys में प्रति-ऐप मेट्रिक्स PANS शामिल है। उदाहरण के लिए, कौन से ऐप्स ने कौन से OEM नेटवर्क का उपयोग किया।

एंड्रॉइड बग्रेपोर्ट बनाकर सभी dumpsys डेटा उपलब्ध है।