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

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

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

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

पैन क्यों?

पैन स्कैन:

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

मुख्य लाभ

PANS OEMS को इन मुख्य लाभों के साथ प्रदान करता है:

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

चित्र 1 . पैन ढांचा

PANS लागू करना

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

चित्र 2. PANS लागू करें

ओम नेटवर्क वरीयता

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 नेटवर्क उनके डिफ़ॉल्ट के रूप में सेट हो सकते हैं और उनका उपयोग करने के लिए उन्हें प्रतिबंधित नेटवर्क अनुमति की आवश्यकता नहीं होगी। जब इस तरह के ऐप में एक प्रतिबंधित ओईएम नेटवर्क होता है जिसे PANS द्वारा अपने डिफ़ॉल्ट नेटवर्क के रूप में असाइन किया जाता है, तो इसमें स्पष्ट रूप से ओईएम नेटवर्क का अनुरोध करने की क्षमता होती है यदि ऐप ऐसा करना चुनता है।

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

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

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

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

मैट्रिक्स

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

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

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

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

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