تعتمد المركبات بشكل متزايد على الاتصال بالإنترنت لإدارة القائمة المتزايدة من حالات الاستخدام التي يطلبها كل من المصنّعين الأصليّين للسيارات وأصحاب المركبات، ما يؤدي إلى زيادة مساحة تخزين البيانات والتكاليف المرتبطة بها. استخدِم ميزة اختيار الشبكة لكل تطبيق (PANS) لتوجيه عدد الزيارات للتطبيقات المحدّدة على الشبكات التي يدفع رسومها مصنّع الجهاز الأصلي.
باستخدام PANS، يمكنك إدارة حجم استخدام البيانات وتكلفته مع توفير تجربة قيادة قوية وآمنة ومتصلة في الوقت نفسه. PANS:
- يتألف من واجهة برمجة تطبيقات جديدة تمت إضافتها إلى
ConnectivityManager
متوفرة فقط للأجهزة المخصّصة للسيارات. - توفير واجهة برمجة تطبيقات جديدة لاقتراحات Wi-Fi (راجِع واجهة برمجة التطبيقات لاقتراحات Wi-Fi للاتصال بالإنترنت) بهدف تضمين إمكانية تغيير إمكانات شبكة PANS بشكل ديناميكي
- تجمع المقاييس الداعمة.
- يقدّم تطبيقًا مرجعيًا.
لماذا PANS؟
يمكن لنظام PANS تنفيذ ما يلي:
- تعديل عمليات الربط بين التطبيقات والشبكات بشكل ديناميكي
- إدارة التوجيه على مستوى التطبيق بدون إجراء تغييرات على التطبيقات
- لا يمكن للتطبيقات المسموح بها من المصنّع الأصلي للجهاز الوصول إلى شبكات المصنّع الأصلي للجهاز التي تم ربطها.
- ولا يحتاج مطوّرو التطبيقات إلى إجراء أي تغييرات لتنفيذ هذه الميزة.
- تتتبّع المقاييس الموجَّهة للمستخدمين استخدام البيانات من التطبيق إلى الشبكة للشبكات التي يديرها المصنّعون الأصليون للأجهزة
- يكون الوصول إلى الشبكة آمنًا ولا يمكن إساءة استخدامه من خلال حالات استخدام غير مقصودة أو التطبيقات غير المصرّح بها.
- يتم إبلاغ المستخدمين بالتغييرات في عمليات ربط التطبيقات بالشبكات في PANS.
- يتم تطبيق إعدادات الشبكة نفسها على جميع المستخدمين.
المزايا الأساسية
يوفّر PANS للمصنّعين الأصليين للأجهزة المزايا الأساسية التالية:
- يمكن لمصنّعي المعدّات الأصلية الدفع مقابل عدد زيارات الشبكة بدلاً من المستخدمين:
- يمكن توفير تحديثات النظام بدون أي تكلفة للمستخدم.
- يمكن توفير استخدام التطبيقات المحدّدة للشبكة بدون أي تكلفة على المستخدم.
- يمكن إدارة بيانات القياس عن بُعد والإحصاءات الأخرى بدون أي تكلفة على المستخدم.
- يمكن لمصنّعي الأجهزة الأصليين ضمان استمرار اتصال التطبيقات المُهمّة حتى بدون خطة بيانات يدفعها المستخدم. على سبيل المثال، تظل الميزات المهمة للسلامة، مثل الخرائط ومساعد Google (ميزة القيادة بدون استخدام اليدين) وتحديثات النظام، تعمل حتى في حال عدم توفّر خطة بيانات لدى المستخدم.
- توفّر PANS دقة إضافية في التحكّم في توجيه حركة المرور على الشبكة في Android. على سبيل المثال، يمكن لمصنّعي المعدّات الأصلية تحديد شبكة منطقية بشكلٍ مثالي لتوجيه الزيارات على مستوى التطبيق.
الشكل 1: إطار عمل PANS
تنفيذ PANS
لتنفيذ PANS، يتم توفير واجهة برمجة تطبيقات ConnectivityManager
جديدة،
setOemNetworkPreference
.
تربط هذه الواجهة الجديدة التطبيقات بـ OemNetworkPreference
.
لا تتوفّر واجهة برمجة التطبيقات هذه إلا للأجهزة المخصّصة للسيارات، وهي موضّحة في التعليق التوضيحي على أنّها
@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_PRIVATE
تُستخدَم هذه الميزة بشكل أساسي لتطبيقات المصنّعين الأصليّين للأجهزة من أجل الوصول إلى شبكة مخصّصة لهم.
/** * 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
لاستخدام واجهات برمجة تطبيقات PANS، اتّبِع الخطوات التالية:
- استخدِم
OemNetworkPreferences
لربط تطبيق بإعدادات مفضّلة للشبكة. - استدعاء
setOemNetworkPreference
باستخدام عنصرOemNetworkPreferences
- استخدِم واجهة
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
API حتى لا تتعطّل حالات استخدام التطبيق الحالية. على سبيل المثال، عندما يريد تطبيق تنفيذ عملية على شبكة غير محدودة، لن تجبر سياسة PANS التطبيق على استخدام شبكة أخرى.
ضبط إعدادات شبكة
يجب توفُّر شبكة تتضمّن إمكانات OEM_PAID
أو OEM_PRIVATE
عند استخدام إعدادات مفضّلة للشبكة ذات الصلة. يقدّم Android
دعمًا لضبط إمكانات شبكات إيثرنت وWi-Fi. بالنسبة إلى
شبكات Ethernet، يمكنك استخدام تراكب الموارد config_ethernet_interfaces
.
يتم ضبط هذا الإعداد في وقت الترجمة.
بالنسبة إلى Wi-Fi، يمكن استخدام واجهة برمجة التطبيقات WifiNetworkSuggestion
مع واجهتَي برمجة التطبيقات الجديدتَين setOemPaid(Boolean)
و
setOemPrivate(Boolean)
في Android 12. ويمكن تغيير ذلك أثناء التشغيل.
راجِع الأمثلة التالية:
- تحدد تراكب الموارد الذي يحمل الاسم
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
capabilities إلى تصنيف هذه الشبكة على أنّها شبكة محظورة. لا يمكن استخدام الشبكات المحظورة إلا من خلال التطبيقات التي تمتلك إذن
CONNECTIVITY_USE_RESTRICTED_NETWORKS
الذي تتحكّم فيه شركات المصنّعين الأصليّين للأجهزة.
يمكن للتطبيقات التي لديها هذا الإذن استخدام الشبكات المحظورة شرط أن تطلب التطبيقات استخدامها صراحةً. ومع ذلك، لن تحصل هذه التطبيقات على الشبكات المحظورة كإعداد تلقائي. يمكن أن يتم ضبط الشبكات المحظورة لجهات التصنيع الأصلية على أنّها الشبكة التلقائية للتطبيقات التي تم ربطها من خلال PANS، ولن تحتاج هذه التطبيقات إلى إذن الشبكة المحظورة لاستخدامها. عندما يكون لدى هذا التطبيق شبكة محدودة تابعة لجهة تصنيع المعدّات الأصلية تم تعيينها كشبكة تلقائية من خلال PANS، يمكنه أيضًا طلب شبكة جهة التصنيع الأصلية هذه صراحةً إذا اختار التطبيق إجراء ذلك.
مراجعة التطبيق المرجعي
يتم توفير تطبيق مرجعي (بما في ذلك الرمز) باسم NetworkPreferenceApp
في عمليات تجميع السيارات التي يتحقّق منها المستخدم، ويوضّح كيفية تنفيذ ما يلي:
- استخدام مقاييس PANS
- اضبط سياسة PANS.
- اضبط سياسة تلقائية للجهاز.
- محو سياسة
- تطبيق سياسة عند التشغيل
- استخدِم Driver Distraction API (راجِع إرشادات تشتت انتباه السائق).
- تعديل شبكة Wi-Fi ديناميكيًا باستخدام
OEM_PAID
وOEM_PRIVATE
الشكل 3: التطبيق المرجعي
المقاييس
لتسهيل الشفافية في ما يتعلّق باستخدام البيانات، يتم جمع المقاييس وإتاحتها
بشأن كمية البيانات التي يتم نقلها عبر عمليات ربط الشبكات
OEM_PAID
وOEM_PRIVATE
.
تحديد المشاكل وحلّها
تنشأ معظم حالات تحديد المشاكل وحلّها عن طريق تطبيق يستخدم الشبكة غير الصحيحة (عدم الاتصال بالشبكة) أو تجاوز الحد الأقصى المسموح به للبيانات. لتفعيل الحلول السريعة:
- يتضمّن
dumpsys
ميزة "الاتصال بالشبكة" قائمة بالشبكات التلقائية النشطة لكل تطبيق والتطبيقات المرتبطة بها (المرتبطة من PANS). - يتضمّن Netd
dumpsys
قواعد جدار الحماية وعنوان IP الخاص بوحدة UID. - تتضمّن إحصاءات الشبكة
dumpsys
مقاييس PANS لكل تطبيق. على سبيل المثال، التطبيقات التي استخدمت شبكة المصنّع الأصلي للجهاز
تتوفّر جميع بيانات dumpsys
من خلال إنشاء تقرير أخطاء Android.