وسایل نقلیه به طور فزاینده ای به اتصال برای مدیریت لیست رو به رشد موارد استفاده درخواست شده توسط OEM ها و صاحبان وسایل نقلیه متکی هستند که منجر به افزایش ردپای داده و هزینه های مرتبط می شود. از ویژگی انتخاب شبکه برای هر برنامه (PANS) برای هدایت ترافیک برنامه های مشخص شده در شبکه هایی که توسط OEM پرداخت می شود، استفاده کنید.
با PANS، میتوانید حجم و هزینه استفاده از داده را مدیریت کنید و در عین حال تجربهای قوی، ایمن و متصل به خودرو را ارائه دهید. تابه:
- شامل یک API جدید اضافه شده به
ConnectivityManager
است که فقط برای دستگاههای خودرویی در دسترس است. - یک API پیشنهاد Wi-Fi بهروزرسانی شده ( برای اتصال به اینترنت به API پیشنهادی Wi-Fi مراجعه کنید) تا از قابلیتهای شبکه PANS بهصورت پویا پشتیبانی کند.
- معیارهای پشتیبانی را جمع آوری می کند.
- یک برنامه مرجع ارائه می دهد.
چرا PANS؟
PANS می تواند:
- بهروزرسانی پویا نگاشتهای برنامه به شبکه.
- مسیریابی در سطح برنامه را بدون ایجاد تغییرات در برنامه ها مدیریت کنید.
- فقط برنامههای OEM مجاز میتوانند به شبکههای OEM نقشهبرداری شده دسترسی داشته باشند.
- توسعه دهندگان برنامه برای اجرای این ویژگی نیازی به ایجاد هیچ تغییری ندارند.
- معیارهای رو به رو کاربر، استفاده از دادههای برنامه به شبکه را برای شبکههای مدیریتشده OEM دنبال میکنند.
- دسترسی به شبکه ایمن است و نمی توان از طریق موارد استفاده ناخواسته یا برنامه های غیرمجاز از آن سوء استفاده کرد.
- تغییرات در نگاشت برنامه به شبکه PANS به کاربران اطلاع داده می شود.
- پیکربندی شبکه یکسان برای همه کاربران اعمال می شود.
مزایای اصلی
PANS مزایای اصلی را در اختیار OEMS قرار می دهد:
- OEM ها می توانند به جای کاربران هزینه ترافیک شبکه را پرداخت کنند:
- به روز رسانی سیستم می تواند بدون هیچ هزینه ای برای کاربر ارائه شود.
- استفاده شبکه از برنامه های مشخص شده را می توان بدون هیچ هزینه ای برای کاربر ارائه کرد.
- تله متری و سایر تجزیه و تحلیل ها را می توان بدون هیچ هزینه ای برای کاربر مدیریت کرد.
- OEM ها می توانند اطمینان حاصل کنند که برنامه های مهم حتی بدون برنامه داده ای که توسط کاربر پرداخت می شود متصل می مانند. بهعنوان مثال، ویژگیهای حیاتی ایمنی مانند نقشهها، دستیار (رانندگی بدون هندزفری)، و بهروزرسانیهای سیستم حتی زمانی که کاربر برنامهای برای داده ندارد، همچنان به کار خود ادامه میدهد.
- 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:
- از
OemNetworkPreferences
برای نگاشت یک برنامه به اولویت شبکه استفاده کنید. -
setOemNetworkPreference
با شیOemNetworkPreferences
فراخوانی کنید. - از رابط
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)
استفاده کرد. این را می توان در زمان اجرا تغییر داد.
این نمونه ها را در نظر بگیرید:
- یک پوشش منبع به نام
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>
- این
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 در دسترس هستند.