از اندروید ۱۲، اندروید شامل پشتیبانی از پیکربندی حق سرویس TS.43 میشود، یک مشخصه GSMA که مرحله تأیید حق را برای فعالسازی سرویسهایی از جمله Voice-over-Wi-Fi (VoWiFi)، Voice-over-LTE (VoLTE)، SMS over IP (SMSoIP)، فعالسازی سرویس روی دستگاه (ODSA) دستگاههای همراه eSIM (مرتبط با دستگاه درخواستکننده) و اطلاعات طرح داده تعریف میکند.
برای پشتیبانی از این مشخصات، اندروید یک ویژگی تعیین حق سرویس IMS ارائه میدهد که به ارائهدهنده خدمات اجازه میدهد دستگاههای تلفن همراه را از وضعیت سرویسهای شبکه زیرسیستم چندرسانهای IP (IMS) مطلع کند. این ویژگی تعیین حق به دستگاه اجازه میدهد تا با استفاده از احراز هویت EAP-AKA و بدون نیاز به وارد کردن دستی هرگونه اعتبارنامه، از سرور تعیین حق اپراتور، همانطور که توسط مشخصات GSMA TS.43 تعریف شده است، برای وضعیت تعیین حق IMS پرس و جو کند.
اپراتورهایی که سرورهای IMS entitlement دارند میتوانند از ویژگی entitlement service IMS برای ارائه خدمات استفاده کنند. استفاده از این ویژگی مزایای زیر را به همراه دارد:
- هزینههای آزمایش و صدور گواهینامه را برای اپراتورها کاهش میدهد زیرا این ویژگی مجوز میتواند در چندین محصول و OEM استفاده شود.
- از طریق یک برنامه استاندارد اندروید، سربار توسعه را برای تولیدکنندگان دستگاه کاهش میدهد.
- به تولیدکنندگان دستگاه و اپراتورها اجازه میدهد کد مربوط به این ویژگی را ارائه دهند زیرا این ویژگی متنباز است.
- مدیریت آدرسهای اضطراری را برای اپراتورهای آمریکای شمالی فراهم میکند.
معماری
شکل زیر معماری و رفتار ویژگی اعطای حق سرویس IMS را شرح میدهد.

شکل 1. معماری ویژگی حق دسترسی TS.43
همانطور که در شکل 1 نشان داده شده است، معماری ویژگی حق دسترسی سرویس IMS شامل اجزای زیر است:
- کتابخانه استاتیک API
service_entitlementTS.43 : این کتابخانه مشخصات TS.43 را پیادهسازی میکند، با سرور مجوز اپراتور تعامل دارد و APIهای مربوط به برنامه را برای هر مورد استفاده TS.43 ارائه میدهد. برنامه کلاینت
ImsServiceEntitlement: این برنامه از API سرویس TS.43 استفاده میکند. این برنامه عناصر رابط کاربری، از جمله نماهای وب برای رندر کردن پورتال سرویس اپراتور برای فعالسازی سرویسها توسط کاربران، را پیادهسازی میکند و با سایر اجزای اندروید برای مدیریت تجربه کاربری از ابتدا تا انتها تعامل دارد.برای اطلاعات بیشتر در مورد نحوه پیکربندی اندروید برای کار با سرور تعیین حق دسترسی مبتنی بر TS.43 اپراتور، به برنامه ImsServiceEntitlement مراجعه کنید.
خطوط شمارهگذاری شده در شکل 1 نشان میدهند که چگونه اجزای ویژگی حق سرویس IMS با یکدیگر ارتباط برقرار میکنند. در ادامه هر یک از مراحل به صورت برچسبگذاری شده شرح داده شده است:
(1) برنامهی کلاینت، API سرویس TS.43 را برای شروع درخواست مجوز سرویس فراخوانی میکند.
(2) رابط برنامهنویسی کاربردی سرویس TS.43 یک درخواست HTTP به سرور مجوز اپراتور ارسال میکند تا یک چالش EAP-AKA را آغاز کند.
(3) رابط برنامهنویسی کاربردی سرویس TS.43، رابطهای برنامهنویسی کاربردی تلفن (برای مثال، getIccAuthentication ) را برای تکمیل چالش-پاسخ EAP-AKA فراخوانی میکند.
(4) سرویس TS.43 پس از تأیید پاسخ EAP-AKA، دادههای مربوط به حق سرویس یا پیکربندی را از سرور حق سرویس اپراتور دریافت میکند.
(5) سرویس TS.43 دادههای مربوط به مجوز سرویس یا پیکربندی را به برنامهی کلاینت برمیگرداند.
(6) برنامه کلاینت دادهها را مدیریت میکند و به صورت اختیاری پورتال خدمات اپراتور را برای کاربر ارائه میدهد تا فعالسازی سرویس را تکمیل کند.
ادغام
این بخش فرآیند ادغام کتابخانه service_entitlement و برنامه ImsServiceEntitlement را شرح میدهد.
از آنجا که هیچ وابستگی به API اندروید ۱۲ وجود ندارد، کتابخانه service_entitlement و برنامه ImsServiceEntitlement میتوانند برای پلتفرمهای اندروید پایینتر بکپورت شوند.
کتابخانه service_entitlement
از آنجا که کتابخانه service_entitlement به صورت ایستا به برنامه ImsServiceEntitlement متصل است، هیچ مرحله اضافی برای ادغام کتابخانه در برنامه 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
به طور پیشفرض، اندروید برنامه ImsServiceEntitlement را به عنوان یک برنامه دارای امتیاز در پارتیشن محصول نصب میکند. برای پیکربندی برنامه، از کلیدهای CarrierConfig زیر استفاده کنید:
| کلید | ارزش |
|---|---|
KEY_ENTITLEMENT_SERVER_URL_STRING | آدرس اینترنتی سرور مجوز اپراتور. پیشوند https:// باید درج شود. |
KEY_FCM_SENDER_ID_STRING | شناسه فرستنده FCM اپراتور. اگر اپراتور به FCM نیازی ندارد، این مقدار را تنظیم نکنید. |
KEY_SHOW_VOWIFI_WEBVIEW_BOOL | اگر اپراتور برای ثبت نام کاربران در سرویس VoWiFi به رابط کاربری پورتال وب نیاز دارد، روی true تنظیم کنید. برای مثال، موافقت با شرایط و ضوابط یا وارد کردن آدرس اضطراری.این معمولاً توسط شرکتهای حمل و نقل در آمریکای شمالی مورد نیاز است. |
KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING | اگر KEY_SHOW_VOWIFI_WEBVIEW_BOOL true داشته باشد، روی com.android.imsserviceentitlement/.WfcActivationActivity تنظیم میشود. |
KEY_IMS_PROVISIONING_BOOL | اگر اپراتور نیاز به تأمین شبکه سرویسهای IMS (VoLTE/VoWiFi/SMSoIP) در پسزمینه دارد، روی true تنظیم کنید.این مورد توسط برخی از شرکتهای حمل و نقل اروپایی الزامی است. |
KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL | اگر KEY_IMS_PROVISIONING_BOOL true داشته باشد، روی true تنظیم میشود. |
ترافیک HTTP به سرور مجوز و پورتال وب اپراتور از طریق شبکه پیشفرض، مثلاً داده تلفن همراه یا وایفای پیشفرض، ارسال میشود.
شرکای GMS: اپراتورهای زیر توسط برنامهی TS.43 entitlement در اندروید ۱۲، مطابق با مشخصات TS.43 v5.0 پشتیبانی میشوند:
- ایالات متحده: CSire، US Cellular، Cellcom
- فرانسه: نارنجی
رابط کاربری سیستم اضافی برای تأمین IMS
این بخش توضیح میدهد که چگونه تولیدکنندگان اصلی تجهیزات (OEM) میتوانند از عناصر رابط کاربری سیستم اضافی مربوط به تأمین سرویس IMS پشتیبانی کنند (برای مثال، هنگام نمایش اعلان هنگام تأمین VoWiFi).
برنامه ImsServiceEntitlement با استفاده از API سیستم ProvisioningManager.setProvisioningIntValue(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE, value) وضعیت تأمین VoWiFi را در پلتفرم تنظیم میکند. این 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 تنظیم کنید.
تغییر آدرس اینترنتی سرور مجوز
برای تغییر آدرس اینترنتی سرور مجوز، پیکربندی حامل KEY_ENTITLEMENT_SERVER_URL_STRING را لغو کنید و مقدار آن را روی رشته URL مورد انتظار تنظیم کنید. باید پیشوند https:// را وارد کنید.
پیکربندیهای حامل را نادیده بگیرید
از اندروید ۱۱، دستورات لغو پیکربندی اپراتور به صورت داخلی و با دسترسی روت در دسترس هستند.
دستور زیر نمونهای از نحوهی لغو کلید پیکربندی carrier carrier_volte_provisioning_required_bool و تنظیم مقدار آن به false است. میتوانید این دستور را چندین بار اجرا کنید تا چندین پیکربندی را لغو کنید.
adb rootadb 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