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

מגרסה 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). תכונת ההרשאה הזו מאפשרת למכשיר לשלוח שאילתה לשרת ההרשאות של הספק, כפי שמוגדר במפרט GSMA TS.43, לגבי סטטוס ההרשאה של IMS באמצעות אימות EAP-AKA, בלי שהמשתמשים יצטרכו להזין פרטי כניסה באופן ידני.

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

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

ארכיטקטורה

באיור הבא מתוארת הארכיטקטורה וההתנהגות של התכונה 'הענקת הרשאות לשירות IMS'.

TS.43 entitlement feature

איור 1. TS.43 entitlement feature architecture

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

  • service_entitlement TS.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

בקטע הזה מוסבר איך יצרני ציוד מקורי יכולים לתמוך ברכיבי ממשק משתמש נוספים שקשורים להקצאת שירותי 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 או באמצעות רישום של קריאה חוזרת (callback) כדי לעקוב אחרי שינוי מצב ההקצאה דרך 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 ולהגדיר את הערך שלו למחרוזת כתובת אתר צפויה. חובה לכלול את הקידומת https://.

שינוי הגדרות הספק

מגרסה Android 11, פקודות לביטול הגדרות של ספק סלולר מובנות וזמינות עם הרשאות רוט.

הפקודה הבאה היא דוגמה לאופן שבו אפשר לבטל את המפתח 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