انتخاب شبکه برای هر برنامه (PANS)

وسایل نقلیه به طور فزاینده ای به اتصال برای مدیریت لیست رو به رشد موارد استفاده درخواست شده توسط OEM ها و صاحبان وسایل نقلیه متکی هستند که منجر به افزایش ردپای داده و هزینه های مرتبط می شود. از ویژگی انتخاب شبکه برای هر برنامه (PANS) برای مسیریابی ترافیک برنامه های مشخص شده در شبکه هایی که توسط OEM پرداخت می شود، استفاده کنید.

با PANS، می‌توانید حجم و هزینه استفاده از داده را مدیریت کنید و در عین حال تجربه‌ای قوی، ایمن و متصل به خودرو را ارائه دهید. تابه:

  • شامل یک API جدید اضافه شده به ConnectivityManager است که فقط برای دستگاه های خودرو در دسترس است.
  • یک API پیشنهاد Wi-Fi به‌روزرسانی شده (به API پیشنهادی Wi-Fi برای اتصال به اینترنت مراجعه کنید) ارائه می‌کند تا از قابلیت‌های شبکه PANS به‌صورت پویا پشتیبانی کند.
  • معیارهای پشتیبانی را جمع آوری می کند.
  • یک برنامه مرجع ارائه می دهد.

چرا PANS؟

PANS می تواند:

  • به روز رسانی پویا نگاشت برنامه به شبکه
  • مسیریابی در سطح برنامه را بدون ایجاد تغییرات در برنامه ها مدیریت کنید.
  • فقط برنامه های دارای OEM مجاز می توانند به شبکه های OEM نقشه برداری شده دسترسی داشته باشند.
  • توسعه دهندگان برنامه برای پیاده سازی این ویژگی نیازی به ایجاد هیچ تغییری ندارند.
  • معیارهای رو به رو کاربر، استفاده از داده های برنامه به شبکه را برای شبکه های مدیریت شده OEM دنبال می کنند.
  • دسترسی به شبکه ایمن است و نمی توان از طریق موارد استفاده ناخواسته یا برنامه های غیرمجاز از آن سوء استفاده کرد.
  • تغییرات PANS نگاشت برنامه به شبکه به کاربران اطلاع رسانی می شود.
  • پیکربندی شبکه یکسان برای همه کاربران اعمال می شود.

مزایای اصلی

PANS مزایای اصلی را در اختیار OEMS قرار می دهد:

  1. OEM ها می توانند به جای کاربران هزینه ترافیک شبکه را پرداخت کنند:
    • به روز رسانی سیستم می تواند بدون هیچ هزینه ای برای کاربر ارائه شود.
    • استفاده از شبکه از برنامه های مشخص شده را می توان بدون هیچ هزینه ای برای کاربر ارائه کرد.
    • تله متری و سایر تجزیه و تحلیل ها را می توان بدون هیچ هزینه ای برای کاربر مدیریت کرد.
  2. OEM ها می توانند اطمینان حاصل کنند که برنامه های کاربردی حیاتی حتی بدون برنامه داده های پرداخت شده توسط کاربر متصل می مانند. برای مثال، ویژگی‌های حیاتی ایمنی مانند نقشه‌ها، دستیار (رانندگی بدون هندز) و به‌روزرسانی‌های سیستم حتی زمانی که کاربر برنامه‌ای برای داده ندارد، همچنان به کار خود ادامه می‌دهد.
  3. PANS جزئیات بیشتری از کنترل را برای مسیریابی ترافیک شبکه در اندروید فراهم می کند. به عنوان مثال، OEM ها می توانند به طور بهینه یک توپولوژی شبکه منطقی را برای مسیریابی ترافیک در سطح برنامه تعریف کنند.

شکل 1 . چارچوب PANS

پیاده سازی PANS

برای پیاده سازی PANS، یک ConnectivityManager API جدید، setOemNetworkPreference ، ارائه شده است. این API جدید برنامه ها را به یک OemNetworkPreference می کند. این API فقط برای دستگاه‌های خودرو در دسترس است و به عنوان @SystemApi با مجوز signature جدید حاشیه‌نویسی شده است.

شکل 2. 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;

فراخوانی PANS API

برای استفاده از PANS API:

  1. از OemNetworkPreferences برای نگاشت یک برنامه به اولویت شبکه استفاده کنید.
  2. setOemNetworkPreference را با شی OemNetworkPreferences کنید.
  3. از رابط Runnable برای گوش دادن به تکمیل API استفاده کنید.

مثلا:

// 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 های تخصصی استفاده کند. این نه تنها اکثریت قریب به اتفاق نیازهای اتصال را پوشش می‌دهد، بلکه امکان استفاده مداوم از APIهای تخصصی مانند NetworkRequest API را نیز فراهم می‌کند تا موارد استفاده برنامه موجود را از بین نبرد. به عنوان مثال، وقتی یک برنامه فقط می‌خواهد عملیاتی را روی یک شبکه بدون اندازه‌گیری انجام دهد، PANS آن را مجبور به استفاده از شبکه دیگری نمی‌کند.

پیکربندی یک شبکه

شبکه ای با قابلیت های OEM_PAID یا OEM_PRIVATE باید هنگام استفاده از اولویت شبکه مربوطه در دسترس باشد. اندروید از پیکربندی قابلیت های شبکه های اترنت و وای فای پشتیبانی می کند. برای شبکه های اترنت، می توانید از یک پوشش منبع، config_ethernet_interfaces استفاده کنید. این در زمان کامپایل تنظیم می شود.

برای Wi-Fi، WifiNetworkSuggestion API را می توان با 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 در ساخت‌های اتوموبیل اشکال‌زدایی کاربر ارائه شده است و نشان می‌دهد که چگونه:

  • معیارهای PANS را مصرف کنید.
  • خط مشی PANS را تنظیم کنید.
  • یک خط مشی پیش فرض برای دستگاه تنظیم کنید.
  • یک خط مشی را پاک کنید
  • اعمال سیاست در بوت
  • از Driver Distraction API استفاده کنید (به دستورالعمل های حواس پرتی راننده مراجعه کنید).
  • Wi-Fi را به‌صورت پویا با OEM_PAID و OEM_PRIVATE کنید.

شکل 3. برنامه مرجع

معیارهای

برای تسهیل شفافیت در مورد استفاده از داده، معیارهایی در مورد میزان داده ارسال شده از طریق نگاشت شبکه OEM_PAID و OEM_PRIVATE جمع آوری و در دسترس قرار می گیرند.

عیب یابی

بیشتر شرایط عیب‌یابی یا از برنامه‌ای که از شبکه اشتباه استفاده می‌کند (بدون اتصال به شبکه) و یا بیش از حد داده ناشی می‌شود. برای فعال کردن وضوح سریع:

  • dumpsys اتصال شامل فهرستی از شبکه‌های پیش‌فرض فعال هر برنامه و برنامه‌های مرتبط با آنها (نقشه‌برداری شده از PANS) است.
  • dumpsys شامل IP UID و قوانین فایروال است.
  • dumpsys شامل معیارهای PANS برای هر برنامه است. به عنوان مثال، کدام برنامه ها از کدام شبکه OEM استفاده می کنند.

همه داده‌های dumpsys با ایجاد گزارش اشکال Android در دسترس هستند.