ב-Android 12 נוספה תמיכה במודל רישום יחיד לאספקת תכונות של MMTEL ו-RCS. המודל הזה מאפשר למכשירים לנהל את כל התכונות של IMS באמצעות רישום יחיד ל-IMS שמסופק על ידי ImsService של המכשיר, ולעמוד בדרישות שהוצגו על ידי חלק מספקי הטלקום. בהשוואה למודל רישום כפול, שבו כמה רישומים ל-IMS מנוהלים במכשיר אחד, רישום יחיד מצמצם את התנועה ברשת של הספק ומגדיל את המהימנות.
Android 12 תומך במודל הרישום היחיד הזה באמצעות ארכיטקטורה עם קבוצה של ממשקי API שמאפשרים למערך הטלפוניה של AOSP לנהל גם תכונות 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 ולהגדיר את התכונה PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION ב-Android.
באיור 3 מוצגים ממשקי ה-API שתומכים ברישום יחיד ב-IMS.
איור 3. ממשקי API ברמה גבוהה שתומכים ברישום יחיד ל-IMS
מכשירי Android שתומכים ברישום יחיד ל-IMS כחלק מחבילת הטלפוניה של AOSP, נדרשים לתמוך בכל ממשקי ה-API של AOSP שמתוארים בטבלה הבאה.
| API Surface Area | ממשקי API של אפליקציית RCS | ממשקי API של מערכת IMS של ספקים | תיאור |
|---|---|---|---|
| הקצאת הרשאות ל-RCS | ProvisioningManager | ImsConfigImplBase | מאפשר ליצרן ציוד מקורי או לספק לספק אפליקציה לעדכון סטטוס הקצאת הרשאות RCS אם הספק משתמש במנגנון קנייני להקצאת הרשאות לספק. בנוסף, שירות ה-IMS צריך לתמוך ב-AutoConfigurationServer (ACS) הסטנדרטי לצורך הקצאת הרשאות לספקי סלולר שלא משתמשים במנגנון קנייני. |
| העברת הודעות SIP | SipDelegateManager | SipTransportImplBase | מאפשר לאפליקציית RCS לשייך תגי תכונות ספציפיים של RCS למכשיר ImsService, ואז לשלוח ולקבל הודעות SIP ועדכוני רישום של IMS שמשויכים לתגי התכונות האלה של RCS. |
| התראות ייעודיות על נשיאת כרטיס | ConnectivityManager | DataCallResponse | מאפשרת לאפליקציה להאזין להתראות QoS בשקע שמשויך ליציאה מקומית ספציפית. |
| אימות GBA | bootstrapAuthenticationRequest | GbaService | מאפשר לאפליקציית RCS לבצע אימות ברשת ולגשת למפתחות שמשמשים לתכונות RCS כמו העברת קבצים. |
| החלפת יכולות של משתמשי RCS | ImsRcsManager | RcsCapabilityExchangeImplBase | מספק ל-AOSP את היכולת לשלוח את יכולות ה-MMTEL וה-RCS שלו לספק ImsService, כדי שאפשר יהיה לפרסם אותן כישות אחת ברשת לצורך החלפת יכולות משתמש RCS. ההרשאה מאפשרת גם לאפליקציות אחרות שמתעניינות ביכולות ה-RCS של איש קשר אחד או יותר לשלוח שאילתה לרשת כדי לבדוק מהן היכולות האלה. |
אבטחה והרשאות
ב-Android 12 נוספו ההרשאות הבאות כדי להבטיח גישה מאובטחת לרשת של הספק ולנתוני המשתמש:
android.permission.PERFORM_IMS_SINGLE_REGISTRATIONandroid.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE
אפליקציית ההודעות עם תכונות ה-RCS צריכה להגדיר את ההרשאה
android.permission.PERFORM_IMS_SINGLE_REGISTRATION. כדי להעניק את ההרשאה הזו, התנאים הבאים צריכים להתקיים:
- האפליקציה צריכה להיות מותקנת כאפליקציה עם הרשאות מיוחדות, כלומר היא מותקנת מראש במכשיר ויש לה הרשאה לגשת להרשאות מיוחדות
- צריך להגדיר את האפליקציה בתור תפקיד ברירת המחדל של המשתמש ל-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 in Android.
אימות
כדי לאמת את ההטמעה של רישום יחיד ב-IMS, מבצעים את הפעולות הבאות:
- מוודאים שחבילת הבדיקות של CTS, CtsTelephonyTestCases, עוברת.
- כדי להריץ תרחישי בדיקה בסיסיים של רישום יחיד במהלך השילוב, צריך להתקין ולהריץ את TestRcsApp.
- לעבור אישור של ספק סלולר למקרים של בדיקת רישום יחיד ל-IMS.