اختيار الشبكة لكل تطبيق (PANS)، اختيار الشبكة لكل تطبيق (PANS)

تعتمد المركبات بشكل متزايد على الاتصال لإدارة القائمة المتزايدة من حالات الاستخدام التي يطلبها كل من مصنعي المعدات الأصلية وأصحاب المركبات، مما يؤدي إلى زيادة حجم البيانات والتكاليف المرتبطة بها. استخدم ميزة تحديد الشبكة (PANS) لكل تطبيق لتوجيه حركة مرور التطبيقات المحددة على الشبكات المدفوعة من قبل الشركة المصنعة الأصلية.

باستخدام PANS، يمكنك إدارة حجم وتكلفة استخدام البيانات مع توفير تجربة سيارة قوية وآمنة ومتصلة في نفس الوقت. المقالي:

  • يتكون من واجهة برمجة تطبيقات جديدة تمت إضافتها إلى ConnectivityManager وهي متاحة فقط لأجهزة السيارات.
  • يوفر واجهة برمجة تطبيقات محدثة لاقتراحات Wi-Fi (راجع واجهة برمجة تطبيقات اقتراحات Wi-Fi للاتصال بالإنترنت ) لتشمل دعمًا لقدرات شبكة PANS المتغيرة ديناميكيًا.
  • يجمع المقاييس الداعمة.
  • يوفر التطبيق المرجعي.

لماذا المقالي؟

فحص عموم:

  • قم بتحديث تعيينات التطبيق إلى الشبكة ديناميكيًا.
  • إدارة التوجيه على مستوى التطبيق دون إجراء تغييرات على التطبيقات.
  • يمكن فقط للتطبيقات المسموح بها من قبل OEM الوصول إلى شبكات OEM المعينة.
  • لا يحتاج مطورو التطبيقات إلى إجراء أي تغييرات لتنفيذ هذه الميزة.
  • تعمل المقاييس التي تواجه المستخدم على تتبع استخدام بيانات التطبيق على الشبكة للشبكات المُدارة من قبل OEM.
  • الوصول إلى الشبكة آمن ولا يمكن إساءة استخدامه من خلال حالات الاستخدام غير المقصودة أو التطبيقات غير المصرح بها.
  • يتم إرسال التغييرات التي يتم إجراؤها على تعيينات تطبيق PANS إلى الشبكة إلى المستخدمين.
  • يتم تطبيق نفس تكوين الشبكة على كافة المستخدمين.

المزايا الأساسية

توفر PANS لمصنعي المعدات الأصلية هذه المزايا الأساسية:

  1. يمكن لمصنعي المعدات الأصلية الدفع مقابل حركة مرور الشبكة بدلاً من المستخدمين:
    • يمكن توفير تحديثات النظام دون أي تكلفة على المستخدم.
    • يمكن توفير استخدام الشبكة لتطبيقات محددة دون أي تكلفة على المستخدم.
    • يمكن إدارة القياس عن بعد والتحليلات الأخرى دون أي تكلفة على المستخدم.
  2. يمكن لمصنعي المعدات الأصلية ضمان بقاء التطبيقات المهمة متصلة حتى بدون خطة بيانات مدفوعة الأجر من قبل المستخدم. على سبيل المثال، تستمر الميزات الهامة للسلامة مثل الخرائط والمساعد (القيادة بدون استخدام اليدين) وتحديثات النظام في العمل حتى عندما لا يكون لدى المستخدم خطة بيانات.
  3. يوفر PANS دقة إضافية للتحكم في توجيه حركة مرور الشبكة في Android. على سبيل المثال، يمكن لمصنعي المعدات الأصلية تحديد هيكل الشبكة المنطقي على النحو الأمثل لتوجيه حركة المرور على مستوى التطبيق.

شكل 1 . إطار عمل PANS

تنفيذ المقالي

لتنفيذ PANS، يتم توفير واجهة برمجة تطبيقات ConnectivityManager جديدة، setOemNetworkPreference . تقوم واجهة برمجة التطبيقات الجديدة هذه بتعيين التطبيقات إلى OemNetworkPreference . واجهة برمجة التطبيقات هذه متاحة فقط لأجهزة السيارات وتمت الإشارة إليها كـ @SystemApi مع إذن signature جديد.

الشكل 2. تنفيذ المقالي

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

لاستخدام واجهات برمجة تطبيقات PANS:

  1. استخدم OemNetworkPreferences لتعيين تطبيق لتفضيلات الشبكة.
  2. قم باستدعاء setOemNetworkPreference باستخدام كائن OemNetworkPreferences .
  3. استخدم الواجهة 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 الدعم لتكوين إمكانيات شبكات Ethernet وWi-Fi. بالنسبة لشبكات Ethernet، يمكنك استخدام تراكب الموارد، config_ethernet_interfaces . يتم تعيين هذا في وقت الترجمة.

بالنسبة لشبكة Wi-Fi، يمكن استخدام واجهة برمجة تطبيقات WifiNetworkSuggestion مع واجهات برمجة تطبيقات 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 ، والذي يتحكم فيه مصنعو المعدات الأصلية.

يمكن للتطبيقات التي لديها هذا الإذن استخدام الشبكات المقيدة بشرط أن تطلبها التطبيقات صراحةً . ومع ذلك، لن تحصل هذه التطبيقات على شبكات مقيدة كإعداد افتراضي لها. يمكن أن تحتوي التطبيقات المعينة من خلال PANS على شبكات OEM مقيدة تم تعيينها كشبكات افتراضية ولن تحتاج إلى إذن الشبكة المقيدة لاستخدامها. عندما يكون لدى مثل هذا التطبيق شبكة OEM مقيدة تم تعيينها كشبكة افتراضية بواسطة PANS، فإنه يتمتع أيضًا بالقدرة على طلب شبكة OEM المذكورة بشكل صريح إذا اختار التطبيق القيام بذلك.

قم بمراجعة التطبيق المرجعي

يتم توفير تطبيق مرجعي (بما في ذلك التعليمات البرمجية) يسمى NetworkPreferenceApp في تصميمات السيارات لتصحيح أخطاء المستخدم ويوضح كيفية:

  • تستهلك مقاييس PANS.
  • ضبط سياسة PANS.
  • قم بتعيين سياسة افتراضية للجهاز.
  • مسح السياسة.
  • تطبيق سياسة على التمهيد.
  • استخدم واجهة برمجة تطبيقات تشتيت انتباه السائق (راجع إرشادات تشتيت انتباه السائق ).
  • قم بتحديث شبكة Wi-Fi ديناميكيًا باستخدام OEM_PAID و OEM_PRIVATE .

الشكل 3. التطبيق المرجعي

المقاييس

لتسهيل الشفافية حول استخدام البيانات، يتم جمع المقاييس وإتاحتها فيما يتعلق بكمية البيانات المنقولة عبر تعيينات الشبكة OEM_PAID و OEM_PRIVATE .

استكشاف الأخطاء وإصلاحها

تنشأ معظم حالات استكشاف الأخطاء وإصلاحها إما من تطبيق يستخدم شبكة خاطئة (لا يوجد اتصال بالشبكة) أو من زيادة البيانات. لتمكين الحلول السريعة:

  • يتضمن الاتصال dumpsys قائمة بالشبكات الافتراضية النشطة لكل تطبيق والتطبيقات المرتبطة بها (المعينة من PANS).
  • يتضمن Netd dumpsys قواعد UID IP وجدار الحماية.
  • يتضمن Netstats dumpsys مقاييس PANS لكل تطبيق. على سبيل المثال، ما هي التطبيقات التي تستخدم شبكة OEM.

جميع بيانات dumpsys متاحة عن طريق إنشاء تقرير أخطاء لنظام Android.