تعتمد المركبات بشكل متزايد على الاتصال لإدارة قائمة متزايدة من حالات الاستخدام التي يطلبها كل من مصنّعي المعدات الأصلية ومالكي المركبات، ما يؤدي إلى زيادة حجم البيانات والتكاليف المرتبطة بها. استخدِم ميزة اختيار الشبكة لكل تطبيق (PANS) لتوجيه حركة بيانات تطبيقات محدّدة على شبكات يدفع مقابلها مصنّع المعدات الأصلية.
باستخدام PANS، يمكنك إدارة حجم البيانات المستخدَمة وتكلفتها مع توفير تجربة استخدام قوية وآمنة ومتصلة في السيارة في الوقت نفسه. PANS:
- تتألف من واجهة برمجة تطبيقات جديدة تمت إضافتها إلى
ConnectivityManagerولا تتوفّر إلا على أجهزة السيارات. - توفّر واجهة برمجة تطبيقات معدَّلة لاقتراحات شبكة Wi-Fi (راجِع واجهة برمجة التطبيقات لاقتراحات شبكة Wi-Fi من أجل الاتصال بالإنترنت) لتشمل إمكانية تغيير إعدادات شبكة PAN بشكل ديناميكي.
- تجمع هذه السمة المقاييس الداعمة.
- توفّر تطبيقًا مرجعيًا.
لماذا يجب استخدام PANS؟
يمكن أن تتضمّن أرقام الحسابات الشخصية ما يلي:
- تعديل عمليات الربط بين التطبيقات والشبكات بشكل ديناميكي
- إدارة التوجيه على مستوى التطبيق بدون إجراء تغييرات على التطبيقات
- يمكن للتطبيقات التي تسمح بها الشركة المصنّعة للجهاز الأصلي فقط الوصول إلى شبكات الشركة المصنّعة للجهاز الأصلي التي تم ربطها.
- لا يحتاج مطوّرو التطبيقات إلى إجراء أي تغييرات لتنفيذ هذه الميزة.
- تتتبّع المقاييس المخصّصة للمستخدمين استخدام البيانات من التطبيق إلى الشبكة للشبكات التي يديرها المصنّع الأصلي للجهاز.
- يتم تأمين الوصول إلى الشبكة ولا يمكن إساءة استخدامه من خلال حالات استخدام غير مقصودة أو تطبيقات غير مصرَّح بها.
- يتم إبلاغ المستخدمين بالتغييرات التي تطرأ على عمليات الربط بين تطبيقات PANS والشبكات.
- يتم تطبيق إعدادات الشبكة نفسها على جميع المستخدمين.
المزايا الأساسية
توفّر خدمة PANS للمصنّعين الأصليين للأجهزة المزايا الأساسية التالية:
- يمكن لمصنّعي المعدات الأصلية الدفع مقابل عدد زيارات الشبكة بدلاً من المستخدمين:
- يمكن توفير تحديثات النظام للمستخدم بدون أي تكلفة.
- يمكن توفير استخدام الشبكة للتطبيقات المحدّدة بدون أي تكلفة على المستخدم.
- يمكن إدارة بيانات القياس عن بُعد والإحصاءات الأخرى بدون أي تكلفة على المستخدم.
- يمكن لمصنّعي المعدات الأصلية ضمان بقاء التطبيقات المهمة متصلة حتى بدون خطة بيانات مدفوعة من المستخدم. على سبيل المثال، تستمر الميزات المهمة للسلامة، مثل الخرائط و"مساعد Google" (القيادة بدون استخدام اليدين) وتحديثات النظام، في العمل حتى عندما لا تتوفّر لدى المستخدم خطة بيانات.
- توفّر PANS تحكّمًا دقيقًا إضافيًا خاصًا بتوجيه حركة المرور على الشبكة في Android. على سبيل المثال، يمكن لمصنّعي المعدات الأصلية تحديد بنية شبكة منطقية على النحو الأمثل لتوجيه عدد الزيارات على مستوى التطبيق.
تنفيذ PANS
لتنفيذ PANS، يتم توفير واجهة برمجة تطبيقات جديدة ConnectivityManager، وهي setOemNetworkPreference.
تربط واجهة برمجة التطبيقات الجديدة هذه التطبيقات بـ OemNetworkPreference.
لا تتوفّر واجهة برمجة التطبيقات هذه إلا لأجهزة السيارات، ويتم وضع تعليق توضيحي عليها كـ @SystemApi مع إذن signature جديد.
OemNetworkPreference
OemNetworkPreference هي فكرة مجرّدة عن OEM_PAID وOEM_PRIVATE، وتعمل على ربط التطبيقات بأسماء الحِزم NetworkCapabilities بتفضيلات الشبكة. تسمح إعدادات الشبكة المفضَّلة بإنشاء تسلسلات هرمية للشبكة.
على سبيل المثال، يؤدي ربط تطبيق بإعداد OEM_NETWORK_PREFERENCE_OEM_PAID المفضّل إلى تحديد أولوية الشبكات التلقائية المخصّصة لتطبيق على النحو التالي: استخدام شبكة UNMETERED أولاً، وإذا لم تتوفّر شبكة UNMETERED، يتم استخدام شبكة OEM_PAID، وإذا لم تتوفّر شبكة OEM_PAID، يتم استخدام شبكة النظام التلقائية.
OEM_PAIDيُستخدَم بشكل أساسي للتطبيقات التي يمكن توجيهها على شبكات الشركات المصنّعة الأصلية وغير الأصلية.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
لاستخدام واجهات برمجة التطبيقات 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، وذلك لتجنُّب تعطيل حالات الاستخدام الحالية للتطبيقات. على سبيل المثال، عندما يريد تطبيق إجراء عملية عبر شبكة غير محدودة الاستخدام فقط، لن تفرض عليه خدمة PANS استخدام شبكة أخرى.
إعداد شبكة
يجب أن تتوفّر شبكة تتضمّن إما إمكانية OEM_PAID أو OEM_PRIVATE عند استخدام إعدادات الشبكة المفضّلة المناسبة. يتيح نظام التشغيل Android إمكانية ضبط إعدادات شبكات Ethernet وWi-Fi. بالنسبة إلى شبكات Ethernet، يمكنك استخدام تراكب الموارد، config_ethernet_interfaces.
يتم ضبط هذا الإعداد في وقت الترجمة البرمجية.
بالنسبة إلى شبكة Wi-Fi، يمكن استخدام واجهة برمجة التطبيقات WifiNetworkSuggestion مع واجهات برمجة التطبيقات الجديدة في 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، ولن تحتاج إلى إذن الشبكة المحظورة لاستخدامها. عندما يحدّد نظام PANS شبكة OEM مقيّدة كتلقائية لتطبيق من هذا النوع، يكون بإمكان التطبيق أيضًا طلب شبكة OEM هذه بشكل صريح إذا اختار ذلك.
مراجعة التطبيق المرجعي
يتم توفير تطبيق مرجعي (بما في ذلك الرمز) باسم NetworkPreferenceApp
في إصدارات السيارات المخصّصة لتصحيح الأخطاء، ويوضّح كيفية تنفيذ ما يلي:
- استهلاك مقاييس PANS
- ضبط سياسة PANS
- ضبط سياسة تلقائية للجهاز
- محو سياسة
- تطبيق سياسة عند بدء التشغيل
- استخدام Driver Distraction API (راجِع إرشادات Driver Distraction API)
- تعديل شبكة Wi-Fi ديناميكيًا باستخدام
OEM_PAIDوOEM_PRIVATE
المقاييس
لتسهيل الشفافية بشأن استخدام البيانات، يتم جمع المقاييس وإتاحتها في ما يتعلق بكمية البيانات المنقولة عبر عمليات ربط الشبكة OEM_PAID وOEM_PRIVATE.
تحديد المشاكل وحلّها
تنشأ معظم حالات تحديد المشاكل وحلّها إما بسبب استخدام تطبيق لشبكة غير صحيحة (بدون اتصال بالشبكة) أو بسبب تجاوز الحدّ المسموح به من البيانات. لتفعيل ميزة "حلول سريعة"، اتّبِع الخطوات التالية:
- تتضمّن إمكانية الاتصال
dumpsysقائمة بالشبكات التلقائية النشطة لكل تطبيق والتطبيقات المرتبطة بها (التي تم ربطها من خلال PANS). - يتضمّن Netd
dumpsysعنوان IP الخاص بمعرّف المستخدم وقواعد جدار الحماية. - يتضمّن Netstats
dumpsysمقاييس PANS لكل تطبيق. على سبيل المثال، أي التطبيقات استخدمت أي شبكة تابعة لمصنّع المعدات الأصلية.
تتوفّر جميع بيانات dumpsys من خلال إنشاء تقرير أخطاء في Android.