ב-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.
איור 3. ממשקי API ברמה גבוהה שתומכים בהרשמה יחידה ל-IMS
מכשירי Android שתומכים ברישום יחיד ב-IMS כחלק מסטאק הטלפוניה AOSP צריכים לתמוך בכל ממשקי ה-API של AOSP שמתוארים בטבלה הבאה.
שטח ה-API | ממשקי API של אפליקציות RCS | ממשקי API של IMS של ספקים | תיאור |
---|---|---|---|
הקצאת RCS | ניהול ההקצאה | ImsConfigImplBase | מאפשרת ל-OEM או לספק הרשאה לספק לאפליקציה את סטטוס הקצאת ה-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
android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
ההרשאה 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
, שצריך להתאים לאפליקציית אנשי הקשר של המכשיר. לאחר מכן, האפליקציה הזו מקבלת את התפקיד 'אנשי קשר'.
כדי לגשת ל-APN של IMS באמצעות ConnectivityManager
כדי להגדיר ולנהל את תעבורת הנתונים, האפליקציות צריכות לבקש גם את ההרשאה android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS
.
דוגמאות ומקור
ב-Android יש אפליקציה ב-AOSP שמטמיעה אפליקציית הודעות לבדיקה עם תמיכה בסיסית בהודעות RCS למטרות בדיקה ופיתוח. האפליקציה נמצאת בכתובת testapps/TestRcsApp
.
כשהאפליקציה מותקנת במכשיר, אפשר להגדיר אותה כאפליקציית ברירת המחדל של המשתמש להעברת הודעות, והיא תקבל את ההרשאות הנדרשות כדי לגשת לממשקי ה-API של רישום יחיד ב-IMS.
ב-Android יש גם הטמעה לדוגמה של ImsService ל-RCS. קוד המקור נמצא בכתובת /testapps/ImsTestService
.
הטמעה
למידע נוסף על ההטמעה, הורידו את IMS Single Registration ב-Android.
אימות
כדי לאמת את ההטמעה של רישום יחיד ב-IMS:
- מוודאים שחבילה CtsTelephonyTestCases של בדיקות CTS עוברת.
- כדי להריץ תרחישי בדיקה בסיסיים של רישום יחיד במהלך השילוב, צריך להתקין ולהריץ את TestRcsApp.
- עוברים את אישור הספק עבור תרחישי בדיקה של רישום יחיד ב-IMS.