הרשאה לשירות 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 שמאפשרת לספק שירות להודיע למכשירים ניידים על הסטטוס של שירותי הרשת של IMS (IP Multimedia Subsystem). תכונת ההרשאה הזו מאפשרת למכשיר לשלוח שאילתה לשרת ההרשאות של הספק, כפי שמוגדר במפרט 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. האפליקציה כוללת רכיבי ממשק משתמש, כולל תצוגות אינטרנט (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