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

מגרסה Android 12, מערכת Android כוללת תמיכה בהגדרת הרשאות גישה לשירות TS.43, מפרט של 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'.

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

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

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

השורות הממוספרות באיור 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.

מכיוון שאין תלות ב-API של Android 12, אפשר לבצע backport לספרייה service_entitlement ולאפליקציית ImsServiceEntitlement לפלטפורמות ישנות יותר של Android.

service_entitlement library

מכיוון שהספרייה 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 מגדירים את הערך 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 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