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

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

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

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

למה כדאי להגדיר את מספר החשבון הקבוע (PANS)?

חשבונות PAN יכולים:

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

יתרונות מרכזיים

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

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

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

הטמעת מספרי PAN

כדי להטמיע את מספר החשבון הקבוע (PANS), ממשק API חדש של ConnectivityManager, setOemNetworkPreference, סופק. ה-API החדש הזה ממפה אפליקציות אל OemNetworkPreference. ה-API הזה זמין רק למכשירים מכלי רכב ומפורט בו הערות @SystemApi עם הרשאת signature חדשה.

איור 2. הטמעת מספרי PAN

העדפת רשת OemNetwork

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;

קריאה לממשקי API של PANS

כדי להשתמש בממשקי API של 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), חשוב לזכור את הנקודות הבאות:

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

הגדרת רשת

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

ל-Wi-Fi, ניתן להשתמש ב-API 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 ב-User-Debug Builds, שתדגים איך:

  • שימוש במדדים של PANS.
  • הגדרת מדיניות בנושא PANS.
  • מגדירים מדיניות ברירת מחדל למכשיר.
  • מסירים מדיניות.
  • החלת מדיניות במהלך ההפעלה.
  • שימוש ב-Driver Distraction API (פרטים נוספים זמינים בהנחיות בנושא הסחות דעת של הנהג).
  • עדכון דינמי של ה-Wi-Fi באמצעות OEM_PAID ו-OEM_PRIVATE.

איור 3. אפליקציית עזר

מדדים

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

פתרון בעיות

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

  • הקישוריות dumpsys כוללת רשימה של פעילים רשתות ברירת מחדל לכל אפליקציה והאפליקציות שמשויכות אליהן (ממופות מ-PANS).
  • הרשת dumpsys כוללת כתובות IP של UID וכללי חומת אש.
  • Netstats dumpsys כולל PANS מדדים לכל אפליקציה. לדוגמה, אילו אפליקציות השתמשו בכל רשת של OEM (יצרן ציוד מקורי).

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