প্রতি-অ্যাপ্লিকেশন নেটওয়ার্ক নির্বাচন (PANS)

যানবাহনগুলি ক্রমবর্ধমানভাবে কানেক্টিভিটির উপর নির্ভর করে যাতে OEM এবং গাড়ির মালিক উভয়ের দ্বারা অনুরোধকৃত ব্যবহারের ক্ষেত্রে ক্রমবর্ধমান তালিকা পরিচালনা করে, যার ফলে ডেটা পদচিহ্ন এবং সংশ্লিষ্ট খরচ বৃদ্ধি পায়। OEM দ্বারা অর্থ প্রদান করা নেটওয়ার্কগুলিতে নির্দিষ্ট অ্যাপ্লিকেশনগুলির ট্র্যাফিক রুট করতে প্রতি-অ্যাপ্লিকেশন নেটওয়ার্ক নির্বাচন (PANS) বৈশিষ্ট্যটি ব্যবহার করুন৷

PANS এর মাধ্যমে, আপনি একই সাথে একটি শক্তিশালী, সুরক্ষিত এবং সংযুক্ত গাড়ির অভিজ্ঞতা প্রদান করার সময় ডেটা ব্যবহারের পরিমাণ এবং খরচ পরিচালনা করতে পারেন। প্যানস:

  • ConnectivityManager ম্যানেজারে যোগ করা একটি নতুন API রয়েছে যা শুধুমাত্র স্বয়ংচালিত ডিভাইসগুলিতে উপলব্ধ।
  • গতিশীলভাবে পরিবর্তনশীল PANS নেটওয়ার্ক ক্ষমতাগুলির জন্য সমর্থন অন্তর্ভুক্ত করতে একটি আপডেট করা Wi-Fi পরামর্শ API ( ইন্টারনেট সংযোগের জন্য Wi-Fi পরামর্শ API দেখুন) প্রদান করে।
  • সমর্থনকারী মেট্রিক্স সংগ্রহ করে।
  • একটি রেফারেন্স আবেদন প্রদান করে.

প্যানস কেন?

PANS করতে পারে:

  • অ্যাপ্লিকেশান-টু-নেটওয়ার্ক ম্যাপিংগুলি গতিশীলভাবে আপডেট করুন।
  • অ্যাপ্লিকেশানগুলিতে পরিবর্তন না করেই অ্যাপ্লিকেশন-স্তরের রাউটিং পরিচালনা করুন৷
  • শুধুমাত্র OEM-অনুমোদিত অ্যাপ্লিকেশনগুলি ম্যাপ করা OEM নেটওয়ার্কগুলি অ্যাক্সেস করতে পারে৷
  • অ্যাপ্লিকেশন ডেভেলপারদের এই বৈশিষ্ট্যটি বাস্তবায়ন করতে কোনো পরিবর্তন করতে হবে না।
  • OEM পরিচালিত নেটওয়ার্কগুলির জন্য ব্যবহারকারী-মুখী মেট্রিক্স অ্যাপ্লিকেশন-টু-নেটওয়ার্ক ডেটা ব্যবহার ট্র্যাক করে।
  • নেটওয়ার্ক অ্যাক্সেস নিরাপদ এবং অনিচ্ছাকৃত ব্যবহারের ক্ষেত্রে বা অননুমোদিত অ্যাপ্লিকেশনগুলির মাধ্যমে অপব্যবহার করা যাবে না।
  • PANS অ্যাপ্লিকেশন-টু-নেটওয়ার্ক ম্যাপিংয়ের পরিবর্তনগুলি ব্যবহারকারীদের সাথে যোগাযোগ করা হয়।
  • একই নেটওয়ার্ক কনফিগারেশন সমস্ত ব্যবহারকারীর জন্য প্রয়োগ করা হয়।

মূল সুবিধা

PANS এই মূল সুবিধাগুলির সাথে OEMS প্রদান করে:

  1. OEMগুলি ব্যবহারকারীদের পরিবর্তে নেটওয়ার্ক ট্র্যাফিকের জন্য অর্থ প্রদান করতে পারে:
    • সিস্টেম আপডেট ব্যবহারকারীদের কোন খরচ ছাড়া প্রদান করা যেতে পারে.
    • নির্দিষ্ট অ্যাপের নেটওয়ার্ক ব্যবহার ব্যবহারকারীকে বিনা খরচে প্রদান করা যেতে পারে।
    • টেলিমেট্রি এবং অন্যান্য বিশ্লেষণগুলি ব্যবহারকারীকে বিনা খরচে পরিচালনা করা যেতে পারে।
  2. OEMগুলি নিশ্চিত করতে পারে যে কোনও ব্যবহারকারী-প্রদত্ত ডেটা প্ল্যান ছাড়াই গুরুত্বপূর্ণ অ্যাপ্লিকেশনগুলি সংযুক্ত থাকে৷ উদাহরণস্বরূপ, মানচিত্র, সহকারী (হ্যান্ডস-ফ্রি ড্রাইভিং) এবং সিস্টেম আপডেটগুলির মতো নিরাপত্তা-সমালোচনামূলক বৈশিষ্ট্যগুলি ব্যবহারকারীর কোনও ডেটা প্ল্যান না থাকা সত্ত্বেও কাজ করতে থাকে।
  3. PANS অ্যান্ড্রয়েডে নেটওয়ার্ক ট্র্যাফিক রাউটিং-এর জন্য নির্দিষ্ট নিয়ন্ত্রণের অতিরিক্ত গ্রানুলারিটি প্রদান করে। উদাহরণস্বরূপ, OEM গুলি অ্যাপ্লিকেশন-স্তরের ট্র্যাফিকের রাউটিংয়ের জন্য একটি লজিক্যাল নেটওয়ার্ক টপোলজিকে সর্বোত্তমভাবে সংজ্ঞায়িত করতে পারে।

চিত্র 1 । প্যানস ফ্রেমওয়ার্ক

PANS বাস্তবায়ন করা

PANS বাস্তবায়নের জন্য, একটি নতুন ConnectivityManager API, setOemNetworkPreference প্রদান করা হয়েছে। এই নতুন API একটি OemNetworkPreference এ অ্যাপ্লিকেশনগুলিকে ম্যাপ করে। এই API শুধুমাত্র স্বয়ংচালিত ডিভাইসের জন্য উপলব্ধ এবং একটি নতুন signature অনুমতি সহ একটি @SystemApi হিসাবে টীকা করা হয়েছে৷

চিত্র 2. প্যানস প্রয়োগ করুন

OemNetwork পছন্দ

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. API সমাপ্তির জন্য শোনার জন্য 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 প্রয়োগ করার সময়, নিম্নলিখিত পয়েন্টগুলি মনে রাখবেন:

  • নেটওয়ার্ক পছন্দগুলি বুট জুড়ে বজায় থাকে না এবং প্রতিটি বুটে পুনরায় প্রয়োগ করতে হবে।
  • একটি অ্যাপ্লিকেশনের জন্য একটি পছন্দ তৈরি করতে, এটি ইনস্টল করার প্রয়োজন নেই৷ অতএব, আনইনস্টল করা অ্যাপগুলির জন্য নেটওয়ার্ক পছন্দগুলি সক্রিয়ভাবে সেট করা যেতে পারে।
  • যে কোনো সময়ে, একটি অ্যাপ শুধুমাত্র একটি নেটওয়ার্ক পছন্দের সাথে ম্যাপ করা যেতে পারে।
  • নেটওয়ার্ক পছন্দগুলি একটি অ্যাপ্লিকেশনের ডিফল্ট নেটওয়ার্ক সেট করতে ব্যবহৃত হয়। এটি এমন নেটওয়ার্ক ব্যবহার করা হয় যখন একটি অ্যাপ্লিকেশন নির্দিষ্ট করে না যে এটি বিশেষায়িত APIগুলির মধ্যে একটির মাধ্যমে কোন নেটওয়ার্ক(গুলি) ব্যবহার করতে চায়৷ এটি শুধুমাত্র কানেক্টিভিটির চাহিদার সিংহভাগই কভার করে না, এটি NetworkRequest API-এর মতো বিশেষ API-এর ক্রমাগত ব্যবহারের অনুমতি দেয় যাতে বিদ্যমান অ্যাপ ব্যবহার-কেসগুলি ভাঙতে না পারে। উদাহরণস্বরূপ, যখন একটি অ্যাপ শুধুমাত্র একটি মিটারবিহীন নেটওয়ার্কের মাধ্যমে একটি অপারেশন করতে চায়, PANS এটিকে অন্য নেটওয়ার্ক ব্যবহার করতে বাধ্য করবে না।

একটি নেটওয়ার্ক কনফিগার করা হচ্ছে

একটি সংশ্লিষ্ট নেটওয়ার্ক পছন্দ ব্যবহার করার সময় OEM_PAID বা OEM_PRIVATE ক্ষমতা সহ একটি নেটওয়ার্ক অবশ্যই উপলব্ধ হতে হবে৷ অ্যান্ড্রয়েড ইথারনেট এবং ওয়াই-ফাই নেটওয়ার্কের জন্য সক্ষমতার কনফিগারেশনের জন্য সমর্থন প্রদান করে। ইথারনেট নেটওয়ার্কের জন্য, আপনি একটি রিসোর্স ওভারলে, config_ethernet_interfaces ব্যবহার করতে পারেন। এই কম্পাইল সময় সেট করা হয়.

Wi-Fi এর জন্য, 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 নীতি সেট করুন।
  • ডিভাইসের জন্য একটি ডিফল্ট নীতি সেট করুন।
  • একটি নীতি পরিষ্কার করুন।
  • বুট একটি নীতি প্রয়োগ করুন.
  • ড্রাইভার ডিস্ট্রাকশন API ব্যবহার করুন ( ড্রাইভার ডিস্ট্রাকশন নির্দেশিকা দেখুন)।
  • OEM_PAID এবং OEM_PRIVATE এর সাথে গতিশীলভাবে Wi-Fi আপডেট করুন৷

চিত্র 3. রেফারেন্স অ্যাপ

মেট্রিক্স

ডেটা ব্যবহারের চারপাশে স্বচ্ছতার সুবিধার্থে, মেট্রিকগুলি সংগ্রহ করা হয় এবং OEM_PAID এবং OEM_PRIVATE নেটওয়ার্ক ম্যাপিংয়ের মাধ্যমে প্রেরিত ডেটার পরিমাণের বিষয়ে উপলব্ধ করা হয়।

সমস্যা সমাধান

বেশিরভাগ সমস্যা সমাধানের শর্তগুলি হয় ভুল নেটওয়ার্ক ব্যবহার করে (কোনও নেটওয়ার্ক সংযোগ নেই) বা ডেটা অতিরিক্ত পরিমাণ ব্যবহার করে একটি অ্যাপ্লিকেশন থেকে উদ্ভূত হয়। দ্রুত রেজোলিউশন সক্ষম করতে:

  • কানেক্টিভিটি dumpsys সক্রিয় প্রতি-অ্যাপ ডিফল্ট নেটওয়ার্ক এবং তাদের সংশ্লিষ্ট অ্যাপ্লিকেশনগুলির একটি তালিকা রয়েছে (PANS থেকে ম্যাপ করা হয়েছে)।
  • Netd dumpsys UID আইপি এবং ফায়ারওয়ালের নিয়ম রয়েছে।
  • Netstats dumpsys PANS প্রতি-অ্যাপ্লিকেশন মেট্রিক্স অন্তর্ভুক্ত থাকে। উদাহরণস্বরূপ, কোন অ্যাপ্লিকেশন কোন OEM নেটওয়ার্ক ব্যবহার করে।

সমস্ত dumpsys ডেটা একটি অ্যান্ড্রয়েড বাগ রিপোর্ট তৈরি করে উপলব্ধ।