انتخاب شبکه برای هر برنامه (PANS)، انتخاب شبکه برای هر برنامه (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 باید هنگام استفاده از اولویت شبکه مربوطه در دسترس باشد. اندروید از پیکربندی قابلیت های شبکه های اترنت و Wi-Fi پشتیبانی می کند. برای شبکه های اترنت، می توانید از یک پوشش منبع، 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) است.
  • Netd dumpsys شامل IP UID و قوانین فایروال است.
  • Netstats dumpsys شامل معیارهای PANS برای هر برنامه است. به عنوان مثال، کدام برنامه ها از کدام شبکه OEM استفاده می کنند.

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