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

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

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

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

لماذا PANS؟

فحص عموم:

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

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

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

  1. يمكن لمصنعي المعدات الأصلية الدفع مقابل حركة مرور الشبكة بدلاً من المستخدمين:
    • يمكن توفير تحديثات النظام مجانًا للمستخدم.
    • يمكن توفير استخدام الشبكة لتطبيقات محددة دون أي تكلفة على المستخدم.
    • يمكن إدارة القياس عن بُعد والتحليلات الأخرى دون أي تكلفة على المستخدم.
  2. يمكن لمصنعي المعدات الأصلية ضمان بقاء التطبيقات الهامة متصلة حتى بدون خطة بيانات مدفوعة من قبل المستخدم. على سبيل المثال ، تستمر ميزات السلامة المهمة مثل الخرائط والمساعد (القيادة بدون استخدام اليدين) وتحديثات النظام في العمل حتى عندما لا يكون لدى المستخدم خطة بيانات.
  3. توفر 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 والشبكات الأخرى.
  • 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 APIs

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

  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 ، ضع في اعتبارك النقاط التالية:

  • لا تستمر تفضيلات الشبكة عبر الأحذية وستحتاج إلى إعادة تطبيقها في كل تمهيد.
  • لإنشاء تفضيل لتطبيق ما ، لا يلزم تثبيته. لذلك ، يمكن تعيين تفضيلات الشبكة للتطبيقات التي تم إلغاء تثبيتها بشكل استباقي.
  • في أي وقت ، لا يمكن تعيين التطبيق إلا لتفضيل شبكة واحدة.
  • تُستخدم تفضيلات الشبكة لتعيين الشبكة الافتراضية للتطبيق. هذه هي الشبكة المستخدمة عندما لا يحدد التطبيق الشبكة (الشبكات) التي يريد استخدامها من خلال إحدى واجهات برمجة التطبيقات المتخصصة. لا يغطي هذا فقط الغالبية العظمى من احتياجات الاتصال ، بل يسمح أيضًا باستمرار استخدام واجهات برمجة التطبيقات المتخصصة مثل NetworkRequest API حتى لا يكسر حالات استخدام التطبيق الحالية. على سبيل المثال ، عندما يريد أحد التطبيقات إجراء عملية فقط عبر شبكة غير مقيَّدة ، فلن يجبره PANS على استخدام شبكة أخرى.

تكوين شبكة

يجب أن تكون الشبكة ذات إمكانيات OEM_PAID أو OEM_PRIVATE متاحة عند استخدام تفضيل الشبكة المقابل. يوفر Android دعمًا لتكوين الإمكانات لشبكات Ethernet و Wi-Fi. بالنسبة لشبكات Ethernet ، يمكنك استخدام تراكب الموارد ، config_ethernet_interfaces . تم تعيين هذا في وقت الترجمة.

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

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

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

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

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

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

المقاييس

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

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

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

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

تتوفر جميع بيانات dumpsys عن طريق إنشاء تقرير أخطاء Android.