حق سرویس IMS

از اندروید ۱۲، اندروید شامل پشتیبانی از پیکربندی حق سرویس 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 را شرح می‌دهد.

ویژگی حق امتیاز TS.43

شکل 1. معماری ویژگی حق دسترسی TS.43

همانطور که در شکل 1 نشان داده شده است، معماری ویژگی حق دسترسی سرویس IMS شامل اجزای زیر است:

  • کتابخانه استاتیک API service_entitlement TS.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 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