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

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

PANS की मदद से, डेटा के इस्तेमाल की संख्या और लागत को मैनेज किया जा सकता है. साथ ही, कार को बेहतर, सुरक्षित, और कनेक्टेड अनुभव भी दिया जा सकता है. PANS:

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

पीएएनएस क्यों?

पैन कार्ड से:

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

मुख्य फ़ायदे

PANS से OEM को ये मुख्य फ़ायदे मिलते हैं:

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

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

पीएएनएस लागू करना

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

दूसरी इमेज. पीएएनएस लागू करना

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 एपीआई जैसे खास एपीआई का इस्तेमाल जारी रखने की सुविधा भी मिलती है, ताकि ऐप्लिकेशन के मौजूदा इस्तेमाल के उदाहरणों में कोई रुकावट न आए. उदाहरण के लिए, जब कोई ऐप्लिकेशन सिर्फ़ बिना मेज़र किए जाने वाले नेटवर्क पर कोई कार्रवाई करना चाहता है, तो PANS उसे किसी दूसरे नेटवर्क का इस्तेमाल करने के लिए मजबूर नहीं करेगा.

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

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

WifiNetworkSuggestion एपीआई का इस्तेमाल, setOemPaid(Boolean) और setOemPrivate(Boolean) जैसे नए Android 12 एपीआई के साथ किया जा सकता है. इसे रनटाइम पर बदला जा सकता है.

इन उदाहरणों पर ध्यान दें:

  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 ने पाबंदी वाले OEM नेटवर्क को डिफ़ॉल्ट नेटवर्क के तौर पर असाइन किया है, तो ऐप्लिकेशन के पास उस OEM नेटवर्क का साफ़ तौर पर अनुरोध करने का विकल्प भी होता है.

रेफ़रंस ऐप्लिकेशन की समीक्षा करना

उपयोगकर्ता के डीबग किए जा सकने वाले वाहन संबंधित बिल्ड में, NetworkPreferenceApp नाम का एक रेफ़रंस ऐप्लिकेशन (इसमें कोड भी शामिल है) दिया गया है. इसमें इन कामों का तरीका बताया गया है:

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

तीसरी इमेज. रेफ़रंस ऐप्लिकेशन

मेट्रिक

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

समस्या का हल

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

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

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