יותר ויותר רכבים מסתמכים על קישוריות כדי לנהל את רשימת תרחישי השימוש ההולכת וגדלה שביקשו יצרני ציוד מקורי (OEM) ובעלי רכבים, וכתוצאה מכך שטח הנתונים והעלויות המשויכות גדלים. אפשר להשתמש בתכונה בחירת רשת לכל אפליקציה (PANS) כדי לנתב את התנועה של אפליקציות ספציפיות ברשתות ש-OEM משלם עליהן.
בעזרת PANS תוכלו לנהל את נפח השימוש בנתונים ואת העלות שלו, תוך מתן חוויית שימוש חזקה, מאובטחת ומחוברת ברכב. מספרי חשבון קבועים (PAN):
- מורכב מ-API חדש שנוסף ל-
ConnectivityManager
וזמין רק למכשירים לכלי רכב. - העדכון כולל ממשק API מעודכן להצעות Wi-Fi (ראו Wi-Fi suggestion API for internet connectivity) שכולל תמיכה בשינויים דינמיים ביכולות של רשתות PANS.
- איסוף מדדים תומכים.
- אפליקציית עזר.
למה כדאי להשתמש ב-PANS?
שירות PANS יכול:
- עדכון דינמי של מיפויים של אפליקציות לרשתות.
- ניהול ניתוב ברמת האפליקציה בלי לבצע שינויים באפליקציות.
- רק אפליקציות שאושרו על ידי יצרן הציוד המקורי יכולות לגשת לרשתות של יצרן הציוד המקורי שמוגדרות במיפוי.
- מפתחי אפליקציות לא צריכים לבצע שינויים כדי להטמיע את התכונה הזו.
- מדדים שגלויים למשתמשים עוקבים אחרי השימוש בנתונים מהאפליקציה לרשת ברשתות שמנוהלות על ידי יצרן ציוד מקורי.
- הגישה לרשת מאובטחת, ואי אפשר לנצל לרעה תרחישי שימוש לא רצויים או אפליקציות לא מורשות.
- המשתמשים יקבלו הודעה על שינויים במיפויים של PANS בין אפליקציות לרשתות.
- אותה הגדרת רשת חלה על כל המשתמשים.
יתרונות מרכזיים
ל-PANS יש יתרונות מרכזיים ליצרני ציוד מקורי:
- יצרני ציוד מקורי יכולים לשלם על תעבורת הנתונים ברשת במקום המשתמשים:
- ניתן לספק עדכוני מערכת ללא עלות למשתמש.
- ניתן לספק שימוש ברשת של אפליקציות ספציפיות ללא עלות למשתמש.
- אפשר לנהל טלמטריה וניתוח נתונים אחרים ללא עלות למשתמשים.
- יצרני ציוד מקורי יכולים להבטיח שאפליקציות קריטיות יישארו מחוברות גם בלי חבילת גלישה בתשלום על ידי המשתמש. לדוגמה, תכונות קריטיות לבטיחות כמו מפות, Assistant (נהיגה ללא ידיים) ועדכוני מערכת ממשיכות לפעול גם אם למשתמש אין חבילת גלישה.
- PANS מספק רמת בקרה פרטנית יותר שמותאמת במיוחד לניתוב של תעבורת נתונים ברשת ב-Android. לדוגמה, יצרני ציוד מקורי יכולים להגדיר באופן אופטימלי טופולוגיית רשת לוגית לניתוב תעבורת נתונים ברמת האפליקציה.
איור 1. מסגרת PANS
הטמעת PANS
כדי להטמיע את PANS, ConnectivityManager
API חדש, 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_PRIVATE
משמש בעיקר לאפליקציות של יצרני ציוד מקורי כדי לקבל גישה לרשת ייעודית.
/** * 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 API
כדי להשתמש בממשקי ה-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 יש תמיכה בהגדרת היכולות של רשתות Ethernet ו-Wi-Fi. ברשתות Ethernet, אפשר להשתמש בשכבת-על של משאבים, config_ethernet_interfaces
.
ההגדרה הזו מוגדרת בזמן הידור.
ב-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
, שנמצאת בשליטת יצרני הציוד המקורי (OEM), יכולות להשתמש ברשתות מוגבלות.
אפליקציות עם ההרשאה הזו יכולות להשתמש ברשתות מוגבלות בתנאי שהאפליקציות מבקשות אותן באופן מפורש. עם זאת, רשתות מוגבלות לא יוגדרו כברירת מחדל באפליקציות האלה. באפליקציות שממופות באמצעות PANS אפשר להגדיר רשתות OEM מוגבלות כברירת מחדל, ולא תהיה צורך בהרשאה לרשת מוגבלת כדי להשתמש בהן. אם לאפליקציה כזו מוקצית רשת OEM מוגבלת כברירת מחדל על ידי PANS, היא יכולה גם לבקש באופן מפורש את רשת ה-OEM הזו אם היא בוחרת לעשות זאת.
בדיקת האפליקציה לדוגמה
אפליקציית עזר (כולל קוד) בשם NetworkPreferenceApp
זמינה בגרסאות build לכלי רכב לצורך ניפוי באגים על ידי משתמשים, וממחישה איך:
- שימוש במדדי PANS.
- מגדירים את מדיניות PANS.
- מגדירים מדיניות ברירת מחדל למכשיר.
- מחיקת מדיניות.
- החלת מדיניות בזמן האתחול.
- משתמשים ב-Driver Distraction API (ראו הנחיות בנושא הסחת דעת הנהג).
- עדכון דינמי של Wi-Fi באמצעות
OEM_PAID
ו-OEM_PRIVATE
.
איור 3. אפליקציית עזר
מדדים
כדי לשפר את השקיפות לגבי השימוש בנתונים, אנחנו אוספים מדדים ומציגים אותם לגבי כמות הנתונים המועברים במיפויי הרשתות OEM_PAID
ו-OEM_PRIVATE
.
פתרון בעיות
רוב התנאים לפתרון בעיות נובעים מאפליקציה שמשתמשת ברשת הלא נכונה (אין קישוריות לרשת) או מחריגות בשימוש בנתונים. כדי להפעיל את הפתרון המהיר:
- הרשימה
dumpsys
כוללת רשימה של רשתות ברירת המחדל הפעילות לכל אפליקציה והאפליקציות המשויכות אליהן (שמופעלות מ-PANS). - Netd
dumpsys
כולל כללי חומת אש וכתובות IP של UID. - הדוח 'נתוני רשת'
dumpsys
כולל מדדים של PANS לכל אפליקציה. לדוגמה, באילו אפליקציות נעשה שימוש ברשת של איזה יצרן ציוד מקורי.
כל הנתונים של dumpsys
זמינים באמצעות יצירת דוח באג ב-Android.