החל מ-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 שמאפשרת לספק שירות להודיע למכשירים ניידים על הסטטוס של שירותי הרשת של IMS (IP Multimedia Subsystem). תכונת ההרשאה הזו מאפשרת למכשיר לשלוח שאילתה לשרת ההרשאות של הספק, כפי שמוגדר במפרט GSMA TS.43, כדי לבדוק את סטטוס ההרשאה ל-IMS באמצעות אימות EAP-AKA, בלי לחייב את המשתמשים להזין פרטי כניסה באופן ידני.
ספקים שיש להם שרתי הרשאות ל-IMS יכולים להשתמש בתכונה של הרשאות לשירותי IMS לצורך הקצאת שירותים. השימוש בתכונה הזו טומן בחובו את היתרונות הבאים:
- הפחתת עלויות הבדיקה והאישור של ספקי הסלולר, כי אפשר להשתמש בתכונה הזו של הרשאה במספר מוצרים ויצרני ציוד מקורי.
- הפחתת העלויות של פיתוח עבור יצרני המכשירים באמצעות אפליקציה רגילה ל-Android.
- התכונה מאפשרת ליצרני מכשירים ולספקים לתרום קוד עבור התכונה, כי התכונה היא בקוד פתוח.
- שירותי ניהול כתובות למקרה חירום עבור ספקים בצפון אמריקה.
ארכיטקטורה
בתרשים הבא מתוארים הארכיטקטורה וההתנהגות של התכונה 'הרשאות לשירות IMS'.
איור 1. ארכיטקטורת התכונה של הרשאות TS.43
כפי שמוצג באיור 1, הארכיטקטורה של התכונה 'הרשאות לשירות IMS' כוללת את הרכיבים הבאים:
service_entitlement
ספרייה סטטית של TS.43 Service API: הספרייה הזו מיישמת את המפרט של TS.43, יוצרת אינטראקציה עם שרת ההרשאות של הספק ומציגה ממשקי API שפונים לאפליקציות לכל תרחיש לדוגמה של TS.43.אפליקציית לקוח של
ImsServiceEntitlement
: האפליקציה הזו משתמשת ב-TS.43 Service API. האפליקציה כוללת רכיבי ממשק משתמש, כולל תצוגות אינטרנט (webviews) לצורך עיבוד פורטל השירות של הספק כדי שהמשתמשים יוכלו להפעיל שירותים, והיא פועלת בשילוב עם רכיבים אחרים של 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
.
מכיוון שאין תלות ב-API של Android 12, אפשר להעביר את הספרייה service_entitlement
ואת האפליקציה ImsServiceEntitlement
לגרסאות ישנות יותר של Android.
ספריית service_entitlement
מכיוון שספריית service_entitlement
מקושרת באופן סטטי ל-ImsServiceEntitlement app
, אין צורך לבצע פעולות נוספות כדי לשלב את הספרייה באפליקציה ImsServiceEntitlement
.
אפשר לשלב את הספרייה service_entitlement
עם האפליקציות שלכם לתרחישי שימוש של TS.43, כמו תוכנית נתונים ו-ODSA. אפשר גם לשלב את הספרייה באפליקציה לתרחישי שימוש של הרשאות שאינן TS.43, על סמך פרוטוקול EAP-AKA.
בהמשך מתוארים ממשקי ה-API שבהם צריך להשתמש בתרחישים כאלה:
- אפליקציית TS.43 שמשתמשת בפרוטוקול HTTP של TS.43 שמוטמע בספרייה: משתמשים בממשקי ה-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
בקטע הזה מוסבר איך יצרני ציוד מקורי יכולים לתמוך ברכיבים נוספים של ממשק המשתמש במערכת שקשורים להקצאת שירותי IMS (לדוגמה, הצגת התראה כשמוקצה VoWiFi).
אפליקציית 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://
.
שינוי הגדרות הספק
החל מגרסה 11 של Android, פקודות לשינוי הגדרות אישיות של ספק הן מובנות וזמינות עם הרשאות 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