רישום יחיד ל-IMS

ב-Android 12 נוספה תמיכה במודל רישום יחיד שמאפשר לספק את התכונות של MMTEL ו-RCS. המודל הזה מאפשר לנהל את כל התכונות של IMS במכשירים באמצעות רישום IMS יחיד שמסופק על ידי ImsService של המכשיר, ולעמוד בדרישות שהציגו ספקי תקשורת מסוימים. בהשוואה למודל של רישום כפול, שבו מנוהלות כמה רישומי IMS במכשיר אחד, רישום יחיד מפחית את התנועה ברשת של הספק ומגביר את האמינות.

Android 12 תומך במודל הרישום היחיד הזה באמצעות ארכיטקטורה עם קבוצה של ממשקי API שמאפשרים ל-AOSP telephony stack לנהל גם את התכונות של MMTEL שמסופקות על ידי ImsService וגם את התכונות של RCS שמסופקות על ידי אפליקציית העברת ההודעות ב-RCS שבחר המשתמש. כדי לתמוך ברישום יחיד ב-IMS, יצרני המכשירים וספקי ה-SoC צריכים להטמיע את ממשקי ה-API האלה כדי להפעיל את התכונות של RCS באפליקציית העברת ההודעות ב-RCS שבחר המשתמש.

באיור 1 מוצג סטאק ה-IMS של המכשיר כשמשתמשים במודל ההרשמה היחיד של IMS. כל האפליקציות של IMS משתמשות ב-ImsService שמוגדר כברירת מחדל במכשיר לתכונות MMTEL ו-RCS באמצעות הרשמה יחידה ל-IMS. השירות כולל הקצאה, העברת הודעות SIP וחילופי יכולות של משתמשי RCS.

ארכיטקטורה של מצב רישום יחיד

איור 1. ארכיטקטורה של מודל רישום יחיד

ב-Android מגרסה 11 ומטה יש תמיכה רק במודל רישום כפול כדי לספק את התכונות של MMTEL ו-RCS. התכונות של MMTEL מסופקות על ידי ImsService של המכשיר, והתכונות של RCS מוטמעות מעל התכונות האלה ומנהלות את סטאק ה-IMS ואת החיבור לרשת של הספק בנפרד.

תרשים 2 ממחיש את הארכיטקטורה של מודל הרישום הכפול. במודל הזה, כל אפליקציה אחראית להתחבר לרשת של הספק וליצור רישום IMS לתכונות MMTEL ו-RCS. ה-ImsService של המכשיר מטמיע את ה-MMTEL, משתמש בחיבור הנתונים של ה-IMS במכשיר לרשת הספק ופועל בנפרד מאפליקציות RCS אחרות.

ארכיטקטורה של מצב רישום כפול

איור 2. הארכיטקטורה של מודל הרישום הכפול

ממשקי API להרשמה יחידה ל-IMS

מכשירים שמחוברים לספקים שמחייבים הרשמה יחידה ל-IMS חייבים לתמוך בממשקי ה-API של הרשמה יחידה ל-IMS ולהגדיר את התכונה של Android‏ PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION. באיור 3 מוצגים ממשקי ה-API שתומכים ברישום יחיד ב-IMS.

ממשקי API שתומכים בהרשמה יחידה ל-IMS

איור 3. ממשקי API ברמה גבוהה שתומכים בהרשמה יחידה ל-IMS

מכשירי Android שתומכים ברישום יחיד ב-IMS כחלק מסטאק הטלפון של AOSP חייבים לתמוך בכל ממשקי ה-API של AOSP שמפורטים בטבלה הבאה.

שטח ה-API API ל-RCS לאפליקציות ממשקי API של IMS של ספקים תיאור
הקצאת RCS ProvisioningManager ImsConfigImplBase מאפשרת ליצרן ציוד מקורי או לספק שירותי סלולר לספק אפליקציה לעדכון סטטוס ההקצאה של RCS, אם הספק משתמש במנגנון קניינית להקצאת הרשאות לספק. בנוסף, ‏ImsService צריך לתמוך ב-AutoConfigurationServer (ACS) הסטנדרטי לצורך הקצאה לספקים שלא משתמשים במנגנון קנייני.
העברת הודעות SIP SipDelegateManager SipTransportImplBase מאפשר לאפליקציית RCS לשייך תגי תכונות ספציפיים של RCS למכשיר ImsService, ולאחר מכן לשלוח ולקבל הודעות SIP ועדכוני רישום IMS שמשויכים לתגי התכונות האלה של RCS.
התראות ייעודיות למוכ"ז ConnectivityManager DataCallResponse הרשאה שמאפשרת לאפליקציה להאזין להתראות QoS ביציאה (socket) שמשויכת ליציאה מקומית ספציפית.
אימות GBA bootstrapAuthenticationRequest GbaService מאפשרת לאפליקציית RCS לבצע אימות מול הרשת ולגשת למפתחות המשמשים לתכונות RCS, כמו העברת קבצים.
החלפת יכולות של משתמשי RCS ImsRcsManager RcsCapabilityExchangeImplBase השירות מאפשר ל-AOSP לשלוח את היכולות של MMTEL ו-RCS לספק ImsService, כדי שניתן יהיה לפרסם אותן ברשת כאישיות אחת לצורך החלפת יכולות של משתמשי RCS. בנוסף, היא מאפשרת לאפליקציות אחרות שמעוניינות לדעת מהן יכולות ה-RCS של איש קשר אחד או יותר לשלוח לרשת שאילתה לגבי יכולות ה-RCS של אנשי הקשר.

אבטחה והרשאות

ב-Android 12 נוספו ההרשאות הבאות כדי להבטיח גישה מאובטחת לרשת של הספק ולנתונים של המשתמש:

ההרשאה android.permission.PERFORM_IMS_SINGLE_REGISTRATION צריכה להיות מוגדרת על ידי אפליקציית ההודעות עם תכונות ה-RCS. כדי שההרשאה הזו תוענק, צריכים להתקיים התנאים הבאים:

  • האפליקציה חייבת להיות מותקנת כאפליקציה בעלת הרשאות, כלומר היא מותקנת מראש במכשיר ויש לה הרשאה לגשת להרשאות בעלות הרשאות
  • צריך להגדיר את האפליקציה בתור תפקיד ברירת המחדל של המשתמש ל-SMS באמצעות RoleManager

אם שני התנאים האלה לא מתקיימים, לאפליקציה תידחה הגישה להרשאה android.permission.PERFORM_IMS_SINGLE_REGISTRATION. פירוש הדבר הוא שאפליקציות צד שלישי לא מורשות לגשת לממשקי API של RCS עם רישום יחיד, כי הן דורשות אישור של ספק הסלולר במכשיר.

כשנותנים לאפליקציה עם ההרשאה android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE גם את ההרשאה READ_CONTACTS, היא יכולה לבקש את יכולות ה-RCS של מספרי הטלפון באמצעות RcsUceAdapter. כדי שההרשאה הזו תוענק, צריכים להתקיים התנאים הבאים:

  • האפליקציה צריכה להיות מותקנת כאפליקציה בעלת הרשאות, כלומר היא מותקנת מראש במכשיר ויש לה הרשאה לגשת להרשאות בעלות הרשאות.
  • צריך להגדיר את האפליקציה כאחד מהתפקידים הבאים של RoleManager:

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

כדי לגשת ל-IMS APN באמצעות ConnectivityManager כדי להגדיר ולנהל את תעבורת הנתונים, האפליקציות צריכות לבקש גם את ההרשאה android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS.

דוגמאות ומקור

מערכת Android מספקת אפליקציה ב-AOSP שמטמיעה אפליקציית הודעות לבדיקה עם תמיכה בסיסית בהודעות RCS למטרות בדיקה ופיתוח. האפליקציה נמצאת בכתובת testapps/TestRcsApp. כשהאפליקציה מותקנת במכשיר, אפשר להגדיר אותה כאפליקציית ברירת המחדל של המשתמש להעברת הודעות, והיא תקבל את ההרשאות הנדרשות כדי לגשת לממשקי ה-API של רישום יחיד ב-IMS.

ב-Android יש גם הטמעה לדוגמה של ImsService ל-RCS. קוד המקור נמצא בכתובת /testapps/ImsTestService.

הטמעה

לפרטים נוספים על ההטמעה, אפשר להוריד את המאמר הרשמה יחידה ל-IMS ב-Android.

אימות

כדי לאמת את ההטמעה של רישום יחיד ב-IMS:

  • מוודאים שחבילה CtsTelephonyTestCases של בדיקות CTS עוברת.
  • כדי להריץ תרחישי בדיקה בסיסיים של רישום יחיד במהלך השילוב, צריך להתקין ולהריץ את TestRcsApp.
  • עוברים את אישור הספק עבור תרחישי בדיקה של רישום יחיד ב-IMS.