מגרסה Android 12, מערכת Android כוללת תמיכה בTS.43 Service Entitlement Configuration, מפרט של GSMA שמגדיר את שלב אימות הזכאות להפעלת שירותים, כולל Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE), SMS over IP (SMSoIP), On-Device Service Activation (ODSA) של מכשירי eSIM נלווים (שמשויכים למכשיר שממנו נשלחת הבקשה) ומידע על חבילת גלישה.
כדי לתמוך במפרט הזה, מערכת Android מספקת תכונה של הרשאת שירות IMS שמאפשרת לספק שירותים לעדכן מכשירים ניידים לגבי הסטטוס של שירותי רשת IP Multimedia Subsystem (IMS). תכונת ההרשאה הזו מאפשרת למכשיר לשלוח שאילתות לשרת ההרשאות של הספק לגבי סטטוס ההרשאה ל-IMS, כפי שמוגדר במפרט GSMA TS.43, באמצעות אימות EAP-AKA, בלי שהמשתמשים יצטרכו להזין פרטי כניסה באופן ידני.
חברות תובלה עם שרתי הרשאות IMS יכולות להשתמש בתכונה 'הקצאת הרשאות לשירות IMS' כדי להקצות הרשאות לשירות. השימוש בתכונה מספק את היתרונות הבאים:
- התכונה הזו מאפשרת לחברות סלולר להשתמש בה בכמה מוצרים ובכמה יצרני ציוד מקורי (OEM), וכך לחסוך בעלויות של בדיקות ואישורים.
- האפליקציה מצמצמת את התקורה של הפיתוח עבור יצרני מכשירים באמצעות אפליקציית Android רגילה.
- יצרני מכשירים וספקים יכולים לתרום קוד לתכונה, כי היא קוד פתוח.
- מספקת ניהול של כתובות למקרה חירום עבור ספקי תקשורת בצפון אמריקה.
ארכיטקטורה
באיור הבא מתוארת הארכיטקטורה וההתנהגות של התכונה 'זכאות לשירות IMS'.
איור 1. TS.43 entitlement feature architecture
כפי שמוצג באיור 1, הארכיטקטורה של תכונת ההרשאות בשירות IMS כוללת את הרכיבים הבאים:
-
service_entitlementTS.43 Service API static library: הספרייה הזו מטמיעה את המפרט TS.43, מתקשרת עם שרת ההרשאות של הספק וחושפת ממשקי API שפונים לאפליקציות לכל תרחיש שימוש ב-TS.43. ImsServiceEntitlementאפליקציית לקוח: האפליקציה הזו משתמשת בממשק TS.43 Service API. האפליקציה מטמיעה רכיבי ממשק משתמש, כולל תצוגות אינטרנט (webview) לעיבוד פורטל השירות של הספק כדי שהמשתמשים יוכלו להפעיל שירותים, ומתקשרת עם רכיבי Android אחרים כדי לנהל את חוויית המשתמש מקצה לקצה.מידע נוסף על הגדרת Android לעבודה עם שרת הרשאות מבוסס TS.43 של ספק זמין במאמר אפליקציית ImsServiceEntitlement.
השורות הממוספרות באיור 1 מראות איך הרכיבים של תכונת ההרשאות של שירות IMS מתקשרים ביניהם. בקטעים הבאים מתואר כל אחד מהשלבים לפי התווית שלו:
(1) אפליקציית הלקוח מפעילה את TS.43 Service API כדי ליזום בקשה להרשאה לשירות.
(2) ממשק ה-API של שירות TS.43 שולח בקשת HTTP לשרת ההרשאות של הספק כדי ליזום אתגר EAP-AKA.
(3) ה-API של שירות TS.43 מפעיל ממשקי API של טלפוניה (לדוגמה, getIccAuthentication) כדי להשלים את האתגר והתגובה של EAP-AKA.
(4) שירות TS.43 מקבל נתוני הרשאה או הגדרה של השירות משרת ההרשאות של הספק אחרי אימות התגובה של EAP-AKA.
(5) שירות TS.43 מחזיר את נתוני ההרשאה או התצורה של השירות לאפליקציית הלקוח.
(6) אפליקציית הלקוח מטפלת בנתונים, ויכולה גם להציג למשתמש את פורטל השירות של הספק כדי להשלים את הפעלת השירות.
שילוב
בקטע הזה מוסבר תהליך השילוב של ספריית service_entitlement
ואפליקציית ImsServiceEntitlement.
מכיוון שאין תלות ב-Android 12 API, אפשר לבצע backport לספרייה service_entitlement ולאפליקציה ImsServiceEntitlement לפלטפורמות Android ישנות יותר.
service_entitlement library
מאחר שהספרייה service_entitlement מקושרת באופן סטטי לאפליקציה ImsServiceEntitlement, לא נדרשים שלבים נוספים כדי לשלב את הספרייה באפליקציה ImsServiceEntitlement.
אפשר לשלב את ספריית service_entitlement באפליקציות שלכם לתרחישי שימוש ב-TS.43, כמו תוכנית נתונים ו-ODSA. אפשר גם לשלב את הספרייה באפליקציה לתרחישי שימוש שאינם קשורים לזכאות ל-TS.43 על סמך פרוטוקול EAP-AKA.
בהמשך מתוארים ממשקי ה-API שבהם אפשר להשתמש בתרחישים כאלה:
- אפליקציית TS.43 שמשתמשת בפרוטוקול TS.43 HTTP שהוטמע בספרייה:
משתמשים בממשקי ה-API במחלקה
ServiceEntitlement. - אפליקציה שלא עומדת בדרישות של TS.43 ומשתמשת בפרוטוקול EAP-AKA שהוטמע בספרייה: צריך להשתמש בממשקי ה-API שמוצגים במחלקה
EapAkaHelper.
אפליקציית ImsServiceEntitlement
כברירת מחדל, מערכת Android כוללת את אפליקציית ImsServiceEntitlement שמותקנת במחיצת המוצר כאפליקציה עם הרשאות מיוחדות. כדי להגדיר את האפליקציה, משתמשים במפתחות CarrierConfig הבאים:
| מפתח | ערך |
|---|---|
KEY_ENTITLEMENT_SERVER_URL_STRING |
כתובת ה-URL של שרת ההרשאות של הספק. חובה לכלול את התחילית https://. |
KEY_FCM_SENDER_ID_STRING |
מזהה השולח של FCM של הספק. אל תגדירו את הערך הזה אם חברת התובלה לא דורשת שימוש ב-FCM. |
KEY_SHOW_VOWIFI_WEBVIEW_BOOL |
מגדירים את הערך true אם הספק דורש ממשק משתמש של פורטל אינטרנט כדי שהמשתמשים יוכלו להירשם לשירות VoWiFi. לדוגמה, הסכמה לתנאים או הזנת כתובת למקרה חירום.בדרך כלל ספקי סלולר בצפון אמריקה דורשים את זה. |
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING |
הערך הוא com.android.imsserviceentitlement/.WfcActivationActivity, אם KEY_SHOW_VOWIFI_WEBVIEW_BOOL הוא true. |
KEY_IMS_PROVISIONING_BOOL |
הערך שמוגדר הוא true אם הספק דורש הקצאת משאבים ברשת לשירותי IMS (VoLTE/VoWiFi/SMSoIP) ברקע.הדרישה הזו חלה על ספקים מסוימים באירופה. |
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL |
ההגדרה היא true אם KEY_IMS_PROVISIONING_BOOL הוא true. |
תעבורת ה-HTTP לשרת ההרשאות ולפורטל האינטרנט של הספק מתבצעת דרך רשת ברירת המחדל, למשל, חבילת גלישה או Wi-Fi.
שותפי GMS: הספקים הבאים נתמכים על ידי אפליקציית ההרשאות TS.43 ב-Android 12, בהתאם למפרט TS.43 v5.0:
- ארה"ב: CSpire, US Cellular, Cellcom
- צרפת: Orange
ממשק משתמש נוסף של המערכת להקצאת הרשאות ל-IMS
בקטע הזה מוסבר איך יצרני ציוד מקורי (OEM) יכולים לתמוך ברכיבי ממשק משתמש נוספים במערכת שקשורים להקצאת שירותי IMS (לדוגמה, כשמוצגת הודעה כשמוקצה שירות VoWiFi).
אפליקציית ImsServiceEntitlement מגדירה את מצב ההקצאה של VoWiFi בפלטפורמה באמצעות ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value) system API. ה-API הזה משמש גם ל-VoLTE (עם KEY_VOLTE_PROVISIONING_STATUS) ול-SMSoIP (עם KEY_SMS_OVER_IP_ENABLED).
ממשק המשתמש של המערכת יכול לקרוא את מצב ההקצאה באמצעות getProvisioningIntValue או על ידי רישום קריאה חוזרת למעקב אחר שינוי מצב ההקצאה באמצעות registerProvisioningChangedCallback.
שינוי הגדרות לצורך בדיקה
כדי לשנות באופן זמני את התנהגות האפליקציה לצורך בדיקה, אפשר להשתמש בהליכים הבאים.ImsServiceEntitlement מידע נוסף על שינוי הגדרות של חברות תובלה
דילוג על תהליך ההרשמה ל-VoWiFi
כדי לדלג על תהליך ההרשמה ל-VoWiFi ולאפשר הפעלה ישירה של VoWiFi, צריך לבטל את ההגדרה של קובץ ההגדרות של הספק KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING ולהגדיר את הערך שלו כמחרוזת ריקה.
דילוג על הקצאת הרשאות IMS
כדי לדלג על הקצאת IMS, להפוך את שירותי ה-IMS לזמינים ולאפשר למשתמשים להפעיל שירותים כאלה בלי הקצאת רשת, צריך לבטל את ההגדרה של תצורת הספק KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL ולהגדיר את הערך שלה ל-false.
שינוי כתובת ה-URL של שרת ההרשאות
כדי לשנות את כתובת ה-URL של שרת ההרשאות, צריך לבטל את ההגדרה של קובץ ההגדרות של הספק KEY_ENTITLEMENT_SERVER_URL_STRING ולהגדיר את הערך שלו למחרוזת כתובת ה-URL הרצויה. חובה לכלול את הקידומת https://.
שינוי הגדרות הספק
מגרסה Android 11, פקודות לביטול הגדרות של ספק הסלולר מובנות וזמינות עם הרשאות root.
הפקודה הבאה היא דוגמה לאופן הביטול של מפתח ההגדרה של הספק carrier_volte_provisioning_required_bool והגדרת הערך שלו ל-false. אפשר להריץ את הפקודה כמה פעמים כדי לבטל כמה הגדרות.
adb rootadb shell cmd phone cc set-value -p carrier_volte_provisioning_required_bool false
כדי לנקות את כל ההגדרות שבוטלו, משתמשים בפקודה הבאה:
adb shell cmd phone cc clear-valuesכדי לקבל מידע נוסף, מריצים את הפקודה הבאה:
adb shell cmd phone cc