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

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

עם 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 זמינים על ידי יצירת דוח באגים של Android.