מכשירי Android ללא יתרת נתונים מאפשרים תעבורת רשת, ולכן חברות סלולר וחברות טלקום נדרשות להטמיע פרוטוקולים לצמצום הסיכון. ב-Android מוטמע פתרון כללי שמאפשר לספקי סלולר ולחברות טלקום לציין מתי היתרה במכשיר נגמרה.
פלטפורמת Android מספקת אפליקציה של ספק עם התנהגות ברירת מחדל לשיכוך תנועה שמבוססת על אות זיהוי של פורטל שבוי. היא גם מספקת לספקי סלולר ול-OEM הזדמנות להתאים אישית את ההתנהגות שלה בעלות נמוכה ועם גמישות רבה.
דוגמאות ומקור
אפליקציית הספק שמוגדרת כברירת מחדל נמצאת במיקוםplatform/frameworks/base/packages/CarrierDefaultApp/.
הטמעה
אפליקציית הספק שמוגדרת כברירת מחדל מיועדת לספק חוויה טובה יותר לספקים שלא הוגדרו מראש. ספקים יכולים להשתמש בהתנהגות ברירת המחדל הזו. הם יכולים גם לבטל את התנהגות ברירת המחדל על ידי הוספת מיפויים של אותות לפעולות לקובץ ה-XML של הגדרות הספק. הם יכולים להחליט לא להשתמש באפליקציית ברירת המחדל, אלא להשתמש בהרשאות UICC עם אפליקציית ספק עצמאית משלהם.
מבוא להטמעה
אותות
מסגרת Android תומכת בהגדרת פעולות לאותות הבאים עם פרמטרים:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
האותות האלה נמצאים ב-frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
.
פעולות נתמכות
אפליקציית הספק שמוגדרת כברירת מחדל מגדירה קבוצה של פעולות נתמכות שאפשר למפות לאותות נתמכים. הם מוגדרים ב-CarrierActionUtils.java
:
public static final int CARRIER_ACTION_ENABLE_METERED_APNS = 0; public static final int CARRIER_ACTION_DISABLE_METERED_APNS = 1; public static final int CARRIER_ACTION_DISABLE_RADIO = 2; public static final int CARRIER_ACTION_ENABLE_RADIO = 3; public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION = 4; public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5; public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS = 6;
הערה: אם ספק סלולר מטמיע אפליקציה עצמאית משלו, הוא יכול להטמיע תמיכה באותות אחרים מלבד אלה שמוזכרים בקטע הזה. הם יכולים גם להגדיר ולשנות את הפעולות שלהם.
מיפוי ברירת מחדל של אותות לפעולות
כדי להגדיר פעולות ברירת מחדל:
- הגדרת מפתח לאותות נתמכים.
מיפוי ברירת המחדל של האותות לפעולות מוגדר ב-
CarrierConfigManager.java
. לכל אחד מהאותות הנתמכים יש מפתח:public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array"; public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
- משייכים פעולות ברירת מחדל למקשי אותות.
מזהי פעולות ברירת המחדל משויכים למפתחות האותות:
sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY, new String[]{ "1, 4" //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION // 4: CARRIER_ACTION_DISABLE_METERED_APNS });
מסגרת הטלפוניה ממפה את הפעולות האלה לאותות המתאימים.
שינוי פעולות ברירת המחדל
אתם יכולים להגדיר פעולות מותאמות אישית לאותות נתמכים בקובץ ה-XML של הגדרות הספק, על ידי שיוך מזהי פעולות למפתחות האותות (מוגדרים ב-CarrierConfigManager.java
). לדוגמה, המיפוי הבא משבית את ה-APN בתשלום ומציג הודעה בפורטל בהפניה אוטומטית:
<string-array name="carrier_default_actions_on_redirection_string_array" num="2"> <item value="1" /> <item value="4" /> </string-array>
ה-framework של הטלפוניה טוען את ההגדרות האלה ומבטל את פעולות ברירת המחדל.
אימות
אין בדיקות CTS, CTS Verifier או GTS לתכונה הזו.
כדי לאמת את התכונה, אפשר להשתמש בבדיקות האימות הידניות האלה:
- אימות ההתראה של חברת הטלקום על חריגה מהיתרה במכשיר.
- אימות של הגבלת ההפניה של תנועה בזמן שהיתרה לא מספיקה וה-Wi-Fi כבוי.
- מוודאים שהתנועה ברשת מושבתת וממשק המשתמש של ההתראות מופיע כשאין יתרה בחשבון.
- אימות הפונקציה של שיחות קוליות או VoLTE במצב של יתרה לא מספיקה.
- מוודאים ששיחות וידאו חסומות במצב של חוסר איזון.
- כש-Wi-Fi מופעל, מוודאים שהמשתמש יכול להמשיך לגלוש באינטרנט, ושלא מופעל תעבורת רשת בזמן הגלישה כשהחשבון לא מאוזן.
- אימות של פונקציות Wi-Fi, WFC ו-Bluetooth במהלך מצב של חוסר איזון.
- משביתים את ה-Wi-Fi. מוודאים שממשק המשתמש של ההתראה על חריגה מהיתרה מוצג, ושתנועת גלישה רגילה לא מופנית מחדש לאתר האינטרנט של חברת הטלקום לצורך הרשמה. מוודאים שלחיצה על הקישור בממשק המשתמש של ההתראה מעבירה את הדפדפן לאתר האינטרנט של חברת הטלקום לצורך הרשמה.
- מוודאים שהחלפה בין מצב טיסה למצב רגיל לא מאפסת את מצב הגבלת התעבורה.
- מוודאים שהחלפת כרטיס SIM פעיל מאפסת את מצב תעבורת הרשת.
- מוודאים שהכנסה מחדש של כרטיס ה-SIM עם היתרה השלילית מפעילה מחדש את ההפניה של תעבורת הנתונים ומשיגה שוב את הגבלת תעבורת הנתונים ברשת.
- מוודאים שהפעלת הטלפון מחדש מפעילה מחדש את ההפניה ומחזירה את ממשק המשתמש של ההתראה ואת הגבלת התעבורה.
- מקישים על ההתראה captiveportal. צריך לוודא שנוצר חיבור לרשת מוגבלת כדי לאפשר למשתמש להוסיף קרדיטים.
- מוודאים שהטענת היתרה בכרטיס ה-SIM או ההפעלה מחדש גורמות לתנועה ברשת הסלולרית להתחדש, והקישור לחברת הטלקום וההתראה על היעדר יתרה נעלמים.
- בדיקת תקינות אחרי שחזור של שירות נתונים.
אפליקציית ברירת המחדל מספקת כמה דוגמאות לבדיקות יחידה וסקריפט להרצת הבדיקות האלה (ראו tests/runtest.sh
). כשמטמיעים גרסה או התנהגות מותאמת אישית, צריך לשקף את ההתאמות האלה בבדיקות יחידה ייעודיות.