הרשאה לשירות IMS

החל מ-Android 12, מערכת Android כוללת תמיכה בTS.43 Service Entitlement Configuration, מפרט GSMA שמגדיר את שלב אימות ההרשאה להפעלת שירותים, כולל Voice-over-Wi-Fi (VoWiFi), Voice-over-LTE (VoLTE), SMS דרך IP (SMSoIP), הפעלת שירות במכשיר (ODSA) של מכשירי ה-eSIM (המידע הזה) ותוכנית הנתונים שבה נשלחה בקשת ה-eSIM.

כדי לתמוך במפרט הזה, ב-Android יש תכונה של הרשאה לשירות IMS שמאפשרת לספקי שירות לעדכן מכשירים ניידים לגבי הסטטוס של שירותי הרשת של מערכת המשנה למולטימדיה (IMS) של IP. תכונת ההרשאה הזו מאפשרת למכשיר לשלוח שאילתה לשרת ההרשאות של הספק כפי שהוגדר במפרט GSMA TS.43 לגבי סטטוס הרשאה IMS באמצעות אימות EAP-AKA, בלי לדרוש מהמשתמשים להזין פרטי כניסה באופן ידני.

ספקים שיש להם שרתי הרשאות IMS יכולים להשתמש בתכונת ההרשאה לשירות IMS להקצאת שירותים. השימוש בתכונה מספק את היתרונות הבאים:

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

אדריכלות

באיור הבא מתוארים הארכיטקטורה וההתנהגות של מאפיין ההרשאה לשירות IMS.

תכונת הרשאה TS.43

איור 1. הארכיטקטורה של מאפייני הרשאה מסוג TS.43

כפי שמוצג באיור 1, הארכיטקטורה של המאפיין הרשאה לשירות IMS כוללת את הרכיבים הבאים:

  • service_entitlement הספרייה הסטטית של TS.43 Service API: הספרייה הזו מטמיעה את מפרט TS.43, מקיימת אינטראקציה עם שרת ההרשאות של הספק וחושפת ממשקי API שמיועדים לאפליקציות לכל תרחיש לדוגמה של TS.43.
  • אפליקציית לקוח של ImsServiceEntitlement: האפליקציה הזו משתמשת ב-TS.43 Service API. האפליקציה מטמיעה רכיבי ממשק משתמש, כולל רכיבי WebView לצורך רינדור פורטל השירות של הספק, כדי שמשתמשים יוכלו להפעיל שירותים ומקיימים אינטראקציה עם רכיבי Android אחרים כדי לנהל את חוויית המשתמש מקצה לקצה.

    למידע נוסף על איך להגדיר את Android כך שיפעל עם שרת הרשאות TS.43 של ספק הסלולר, אפשר לעיין במאמר אפליקציית ImsServiceEntitlement.

הקווים הממוספרים באיור 1 מראים איך הרכיבים של תכונת ההרשאה לשירות IMS מתקשרים זה עם זה. כאן מופיע תיאור של כל אחד מהשלבים, לפי התווית:

(1) אפליקציית הלקוח מפעילה את ממשק ה-API של השירות TS.43 כדי לשלוח בקשה להרשאה לשירות.

(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, לכן אפשר להעביר את הספרייה service_entitlement ואת האפליקציה ImsServiceEntitlement לפלטפורמות ישנות יותר של Android.

ספריית service_entitlement

הספרייה service_entitlement מקושרת באופן סטטי אל ImsServiceEntitlement app, ולכן לא נדרשים שלבים נוספים כדי לשלב את הספרייה באפליקציית 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 אם הספק דורש ממשק משתמש של פורטל אינטרנט כדי שמשתמשים יוכלו להירשם לשירות VoWi-Fi, צריך להגדיר את הערך לערך true. לדוגמה, הסכמה לתנאים ולהגבלות או הזנת כתובת למקרה חירום.

בדרך כלל הדבר נדרש על ידי חברות תובלה בצפון אמריקה.
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 גרסה 5.0:

  • ארה"ב: CSpire, US Cellular, Cellcom
  • צרפת: כתום

ממשק משתמש נוסף של המערכת להקצאת IMS

בקטע הזה מוסבר איך יצרני ציוד מקורי יכולים לתמוך ברכיבים נוספים של ממשק המשתמש של המערכת שקשורים להקצאת שירות IMS (לדוגמה, בהצגת התראה על הקצאת VoWi-Fi).

האפליקציה ImsServiceEntitlement מגדירה את מצב הקצאת ההרשאות של VoWiFi לפלטפורמה באמצעות ה-API של המערכת ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value). ה-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 root
adb 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