हर ऐप्लिकेशन के लिए नेटवर्क चुनना (PANS)

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

पैन की मदद से, डेटा खर्च और वॉल्यूम को एक साथ मैनेज किया जा सकता है ताकि एक-दूसरे से कनेक्ट करने वाली कार का अनुभव मिले. पैन:

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

पैन ही क्यों?

पैन ये काम कर सकते हैं:

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

मुख्य फ़ायदे

PANS के ज़रिए OEMs को ये मुख्य फ़ायदे मिलते हैं:

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

पहली इमेज. PANS फ़्रेमवर्क

PANS लागू करें

PANS को लागू करने के लिए, एक नया ConnectivityManager API, setOemNetworkPreference दिया गया है. यह नया एपीआई, ऐप्लिकेशन को OemNetworkPreference से मैप करता है. यह एपीआई सिर्फ़ वाहन संबंधित डिवाइसों के लिए उपलब्ध है. साथ ही, इसकी व्याख्या @SystemApi को signature की नई अनुमति के साथ.

दूसरा डायग्राम. PANS लागू करें

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;

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

ज़रूरी बातें

पैन कार्ड लागू करते समय, इन बातों का ध्यान रखें:

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

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

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

वाई-फ़ाई के लिए, WifiNetworkSuggestion API का इस्तेमाल, नए वर्शन के साथ किया जा सकता है Android 12 के एपीआई, 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 नाम का एक पहचान ऐप्लिकेशन (कोड के साथ) दिया गया है में, यूज़र-डीबग ऑटोमोटिव बिल्ड में बताया गया है. साथ ही, इसमें यह भी बताया गया है कि ये काम कैसे किए जाते हैं:

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

तीसरी इमेज. पहचान ऐप्लिकेशन

मेट्रिक

डेटा के इस्तेमाल से जुड़ी पारदर्शिता बनाए रखने के लिए, मेट्रिक इकट्ठा की जाती हैं और पर ट्रांसमिट किए गए डेटा की मात्रा के संबंध में उपलब्ध OEM_PAID और OEM_PRIVATE नेटवर्क मैपिंग.

समस्या का हल

समस्या हल करने की ज़्यादातर शर्तें, गलत नेटवर्क का इस्तेमाल करने वाले किसी ऐप्लिकेशन की वजह से होती हैं (कोई नेटवर्क कनेक्टिविटी नहीं है) या डेटा ज़रूरत से ज़्यादा खर्च हो रहा है. तुरंत समाधान पाने के लिए:

  • dumpsys कनेक्टिविटी में, सभी चालू डिवाइसों की सूची शामिल है हर ऐप्लिकेशन के लिए डिफ़ॉल्ट नेटवर्क और उनसे जुड़े ऐप्लिकेशन (पैन से मैप किए गए).
  • नेट dumpsys में यूआईडी आईपी और फ़ायरवॉल के नियम शामिल हैं.
  • नेटस्टैट dumpsys में हर ऐप्लिकेशन के हिसाब से पैन मेट्रिक शामिल हैं. उदाहरण के लिए, किन ऐप्लिकेशन ने OEM नेटवर्क का इस्तेमाल किया.

dumpsys का पूरा डेटा, Android की गड़बड़ी की रिपोर्ट बनाकर उपलब्ध हो जाता है.