כלי רכב מסתמכים יותר ויותר על קישוריות כדי לנהל את הרשימה ההולכת וגדלה של יצרני ציוד מקורי (OEM) וגם בעלי רכבים ביקשו להשתמש בתרחישים לדוגמה שלו, וכתוצאה מכך נרשמה עלייה טביעת הרגל הפחמנית והעלויות המשויכות. שימוש בבחירת רשת לכל אפליקציה (PANS) תכונה לניתוב התנועה של אפליקציות ספציפיות ברשתות ששולמו עליהן על ידי ה-OEM.
באמצעות מספרי PANS אתם יכולים לנהל את הנפח והעלות של השימוש בנתונים בו-זמנית שמספקים חוויית שימוש חזקה, מאובטחת ומחוברת ברכב. מס' PAN:
- מכיל API חדש שנוסף ל-
ConnectivityManager
הזמין רק לכלי רכב. - מספק ממשק API מעודכן של הצעות Wi-Fi (ראו API של הצעות Wi-Fi לחיבור לאינטרנט) כדי לכלול תמיכה בשינוי דינמי של יכולות הרשת של חשבון PANS.
- אוסף מדדים תומכים.
- מספקת אפליקציית עזר.
למה כדאי להגדיר את מספר החשבון הקבוע (PANS)?
חשבונות PAN יכולים:
- עדכון דינמי של המיפויים מאפליקציה לרשת.
- ניהול הניתוב ברמת האפליקציה בלי לבצע שינויים באפליקציות.
- רק אפליקציות באישור OEM (יצרן ציוד מקורי) יכולות לגשת לרשתות ה-OEM הממופות.
- מפתחי אפליקציות לא צריכים לבצע שינויים כדי להטמיע את התכונה הזו.
- מדדים שגלויים למשתמשים עוקבים אחרי השימוש בנתונים מאפליקציה לרשת, בחשבונות שמנוהלים על ידי OEM עמוקה מאוד,
- הגישה לרשת מאובטחת ואי אפשר לנצל אותה לרעה באמצעות תרחישים לא רצויים או אפליקציות לא מורשות.
- שינויים במיפויים של אפליקציות לרשת (PANS) יועברו למשתמשים.
- אותה תצורת רשת חלה על כל המשתמשים.
יתרונות מרכזיים
תוכנית PANS מספקת ליצרני ציוד מקורי (OEM) את היתרונות העיקריים הבאים:
- יצרני ציוד מקורי יכולים לשלם על תנועה ברשת במקום משתמשים:
- אפשר לספק עדכוני מערכת ללא תשלום למשתמשים.
- ניתן לספק למשתמש מידע על השימוש ברשת באפליקציות שצוינו ללא תשלום.
- אפשר לנהל את הטלמטריה וניתוחים אחרים ללא עלות למשתמש.
- יצרני ציוד מקורי יכולים להבטיח שאפליקציות קריטיות יישארו מחוברות גם ללא חבילת גלישה במימון משתמש. לדוגמה, תכונות לשמירה על הבטיחות כמו מפות, Assistant (נהיגה בדיבורית) ועדכוני מערכת ממשיכים לפעול אפילו כשלמשתמש אין תוכנית נתונים.
- מערכת 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:
- אפשר להשתמש ב-
OemNetworkPreferences
כדי למפות אפליקציה להעדפת רשת. - התקשרות אל
setOemNetworkPreference
באמצעותOemNetworkPreferences
לאובייקט. - להשתמש בממשק
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)
. אפשר לשנות את ההגדרה הזו בזמן הריצה.
מומלץ להביא בחשבון את הדוגמאות הבאות:
- שכבת-על של משאב בשם
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>
- אפשר לשנות את
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.