בחירת רשת לפי אפליקציה (PANS), בחירת רשת לפי אפליקציה (PANS)

כלי רכב מסתמכים יותר ויותר על קישוריות כדי לנהל את הרשימה ההולכת וגדלה של מקרי שימוש המתבקשים על ידי יצרני ציוד מקורי ובעלי רכב, וכתוצאה מכך טביעת הרגל המוגדלת של הנתונים ועלויות הנלוות. השתמש בתכונה בחירת רשת לכל אפליקציה (PANS) כדי לנתב את התעבורה של אפליקציות שצוינו ברשתות המשולמות על ידי ה-OEM.

עם PANS, אתה יכול לנהל את הנפח והעלות של השימוש בנתונים ובו זמנית לספק חווית רכב חזקה, מאובטחת ומחוברת. מחבתות:

  • מורכב ממשק API חדש שנוסף ל- ConnectivityManager זמין רק למכשירי רכב.
  • מספק ממשק API להצעות Wi-Fi מעודכן (ראה ממשק API להצעות Wi-Fi לקישוריות לאינטרנט ) כדי לכלול תמיכה ביכולות רשת PANS המשתנות באופן דינמי.
  • אוסף מדדים תומכים.
  • מספק אפליקציית עזר.

למה PANS?

סריקה במחבת:

  • עדכן באופן דינמי מיפויים של אפליקציה לרשת.
  • נהל ניתוב ברמת האפליקציה מבלי לבצע שינויים באפליקציות.
  • רק אפליקציות מורשות OEM יכולות לגשת לרשתות OEM הממופות.
  • מפתחי אפליקציות לא צריכים לבצע שינויים כדי ליישם תכונה זו.
  • מדדים הפונים למשתמש עוקבים אחר שימוש בנתונים מאפליקציה לרשת עבור רשתות מנוהלות OEM.
  • הגישה לרשת מאובטחת ולא ניתן לנצל אותה לרעה באמצעות מקרי שימוש לא מכוון או אפליקציות לא מורשות.
  • שינויים במיפוי אפליקציה לרשת של PANS מועברים למשתמשים.
  • אותה תצורת רשת מוחלת על כל המשתמשים.

יתרונות ליבה

PANS מספקת ליצרני ציוד מקורי את היתרונות העיקריים הבאים:

  1. יצרני OEM יכולים לשלם עבור תעבורת רשת במקום משתמשים:
    • ניתן לספק עדכוני מערכת ללא עלות למשתמש.
    • ניתן לספק שימוש ברשת באפליקציות שצוינו ללא עלות למשתמש.
    • ניתן לנהל טלמטריה וניתוחים אחרים ללא עלות למשתמש.
  2. יצרני OEM יכולים להבטיח שאפליקציות קריטיות יישארו מחוברות גם ללא תוכנית נתונים בתשלום על ידי משתמש. לדוגמה, תכונות קריטיות לבטיחות כגון מפות, אסיסטנט (נהיגה ללא ידיים) ועדכוני מערכת ממשיכים לתפקד גם כאשר למשתמש אין תוכנית נתונים.
  3. PANS מספק פירוט נוסף של שליטה ספציפית לניתוב תעבורת רשת באנדרואיד. לדוגמה, יצרני OEM יכולים להגדיר בצורה מיטבית טופולוגיית רשת לוגית לניתוב של תעבורה ברמת האפליקציה.

איור 1 . מסגרת PANS

יישם PANS

כדי ליישם PANS, מסופק ממשק API חדש ConnectivityManager , 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 APIs

כדי להשתמש בממשקי PANS API:

  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, זכור את הנקודות הבאות:

  • העדפות הרשת אינן נמשכות בכל אתחולים ויש להחיל אותן מחדש בכל אתחול.
  • כדי ליצור העדפה לאפליקציה, אין צורך להתקין אותה. לכן, ניתן להגדיר באופן יזום העדפות רשת עבור אפליקציות שהוסרו.
  • בכל זמן נתון, ניתן למפות אפליקציה רק ​​להעדפת רשת אחת.
  • העדפות רשת משמשות להגדרת רשת ברירת המחדל של אפליקציה. זוהי הרשת המשמשת כאשר אפליקציה לא ציינה באילו רשתות היא רוצה להשתמש באמצעות אחד מממשקי ה-API המיוחדים. לא רק שזה מכסה את הרוב המכריע של צרכי הקישוריות, זה גם מאפשר שימוש מתמשך בממשקי API מיוחדים כגון NetworkRequest API כדי לא לשבור מקרי שימוש קיימים באפליקציה. לדוגמה, כאשר אפליקציה רוצה לבצע פעולה רק ברשת ללא מדידה, PANS לא תאלץ אותה להשתמש ברשת אחרת.

הגדר רשת

רשת עם יכולות OEM_PAID או OEM_PRIVATE חייבת להיות זמינה בעת שימוש בהעדפת רשת מתאימה. אנדרואיד מספקת תמיכה בהגדרת יכולות עבור רשתות Ethernet ו-Wi-Fi. עבור רשתות Ethernet, אתה יכול להשתמש בשכבת-על של משאבים, config_ethernet_interfaces . זה מוגדר בזמן הקומפילציה.

עבור Wi-Fi, ניתן להשתמש ב- WifiNetworkSuggestion API עם ממשקי ה-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 , הנשלטת על ידי יצרני 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 כולל UID IP וכללי חומת אש.
  • Netstats dumpsys כולל מדדי PANS לכל אפליקציה. לדוגמה, אילו אפליקציות השתמשו באיזו רשת OEM.

כל נתוני dumpsys זמינים על ידי יצירת דוח באגים של אנדרואיד.