ثبت یکتای IMS

‫Android 12 از مدل ثبت واحد برای ارائه ویژگی‌های MMTEL و RCS پشتیبانی می‌کند. این مدل به دستگاه‌ها امکان می‌دهد همه ویژگی‌های IMS را ازطریق یک ثبت IMS که توسط ImsService دستگاه ارائه می‌شود مدیریت کنند و از الزامات معرفی‌شده توسط برخی‌از شرکت‌های مخابراتی پیروی کنند. در مقایسه با مدل ثبت دوگانه، که در آن چندین ثبت IMS در یک دستگاه مدیریت می‌شود، ثبت تکی ترافیک شبکه شرکت مخابراتی را کاهش می‌دهد و قابلیت اطمینان را افزایش می‌دهد.

‫Android 12 از این مدل ثبت واحد ازطریق معماری با مجموعه‌ای از API پشتیبانی می‌کند که به پشته تلفنی AOSP امکان می‌دهد ویژگی‌های MMTEL ارائه‌شده توسط ImsService و ویژگی‌های RCS ارائه‌شده توسط برنامه پیام‌رسانی RCS انتخاب‌شده توسط کاربر را مدیریت کند. برای پشتیبانی از ثبت واحد IMS، سازندگان دستگاه و فروشندگان SoC باید این APIها را پیاده‌سازی کنند تا ویژگی‌های RCS را در برنامه پیام‌رسانی RCS انتخاب‌شده توسط کاربر فعال کنند.

شکل ۱ پشته IMS دستگاه را هنگام استفاده از مدل ثبت واحد IMS نشان می‌دهد. همه برنامه‌های IMS از ImsService پیش‌فرض دستگاه برای ویژگی‌های MMTEL و RCS ازطریق یک ثبت IMS استفاده می‌کنند. این شامل تدارک، بازارسال پیام SIP، و تبادل قابلیت کاربر «سرویس‌های ارتباطی غنی» می‌شود.

معماری حالت تک‌ثبتی

شکل ۱. معماری مدل ثبت واحد

‫Android 11 و نسخه‌های پایین‌تر فقط از مدل ثبت دوگانه برای ارائه ویژگی‌های MMTEL و «سرویس‌های ارتباطی غنی» پشتیبانی می‌کنند. در این مدل، MMTEL توسط ImsService دستگاه ارائه می‌شود و ویژگی‌های «سرویس‌های ارتباطی غنی» در بالا پیاده‌سازی می‌شوند و پشته IMS و اتصال به شبکه شرکت مخابراتی را به‌طور مستقل مدیریت می‌کنند.

شکل ۲ معماری مدل ثبت دوگانه را نشان می‌دهد. در این مدل، هر برنامه مسئول اتصال به شبکه شرکت مخابراتی و ایجاد ثبت IMS برای ویژگی‌های MMTEL و RCS است. «خدمات IMS» دستگاه از MMTEL استفاده می‌کند، از اتصال داده IMS دستگاه به شبکه شرکت مخابراتی استفاده می‌کند، و مستقل از دیگر برنامه‌های «سرویس‌های ارتباطی غنی» عمل می‌کند.

معماری حالت ثبت دوگانه

شکل ۲. معماری مدل ثبت‌نام دوگانه

میاناهای برنامه‌سازی کاربردی ثبت IMS تکی

دستگاه‌هایی که در محدوده شرکت‌های مخابراتی‌ای قرار دارند که ثبت تکی IMS را الزامی می‌کنند باید از میاناهای برنامه‌سازی کاربردی ثبت تکی IMS پشتیبانی کنند و ویژگی Android PackageManager#FEATURE_TELEPHONY_IMS_SINGLE_REGISTRATION را تعریف کنند. شکل ۳ میاناهای برنامه‌سازی کاربردی‌ای را نشان می‌دهد که از ثبت تکی IMS پشتیبانی می‌کنند.

سطوح API پشتیبانی‌کننده ثبت واحد IMS

شکل ۳. سطوح میانای برنامه‌سازی کاربردی سطح بالا که از ثبت تکی IMS پشتیبانی می‌کنند

دستگاه‌های Android که از ثبت واحد IMS به‌عنوان بخشی از پشته تلفنی AOSP پشتیبانی می‌کنند باید از همه «میاناهای برنامه‌سازی کاربردی» AOSP که در جدول زیر توضیح داده شده است پشتیبانی کنند.

مساحت سطح میانای برنامه‌سازی کاربردی میاناهای برنامه‌سازی کاربردی برنامه RCS میاناهای برنامه‌سازی کاربردی IMS فروشنده شرح
تأمین RCS ProvisioningManager ImsConfigImplBase به سازنده اصلی یا شرکت مخابراتی اجازه می‌دهد برنامه‌ای برای به‌روزرسانی وضعیت تأمین «سرویس‌های ارتباطی غنی» ارائه دهد، درصورتی‌که شرکت مخابراتی از سازوکار اختصاصی حق شرکت مخابراتی استفاده کند. ‫ImsService باید از سرور استاندارد «پیکربندی خودکار» (ACS) برای آماده‌سازی شرکت‌های مخابراتی که از سازوکار اختصاصی استفاده نمی‌کنند نیز پشتیبانی کند.
بازارسال پیام SIP SipDelegateManager SipTransportImplBase به برنامه «سرویس‌های ارتباطی غنی» اجازه می‌دهد ابتدا برچسب‌های ویژگی «سرویس‌های ارتباطی غنی» خاصی را با دستگاه ImsService مرتبط کند، و سپس پیام‌های SIP و به‌روزرسانی‌های ثبت IMS مرتبط با آن برچسب‌های ویژگی «سرویس‌های ارتباطی غنی» را ارسال و دریافت کند.
اعلان‌های حامل اختصاصی ConnectivityManager DataCallResponse به برنامه اجازه می‌دهد اعلان‌های «کیفیت خدمات» را در سوکتی که با درگاه محلی خاصی مرتبط است گوش دهد.
اصالت‌سنجی GBA bootstrapAuthenticationRequest GbaService به برنامه RCS اجازه می‌دهد در شبکه اصالت‌سنجی کند و به کلیدهای استفاده‌شده برای ویژگی‌های RCS مثل انتقال فایل دسترسی داشته باشد.
تبادل قابلیت کاربر «سرویس‌های ارتباطی غنی» ImsRcsManager RcsCapabilityExchangeImplBase به AOSP امکان می‌دهد قابلیت‌های MMTEL و RCS خود را به فروشنده ImsService ارسال کند تا بتوانند تحت یک نهاد در شبکه برای تبادل قابلیت کاربر RCS منتشر شوند. همچنین به برنامه‌های دیگری که به قابلیت‌های «سرویس‌های ارتباطی غنی» یک یا چند مخاطب علاقه‌مند هستند اجازه می‌دهد قابلیت‌های «سرویس‌های ارتباطی غنی» مخاطبان را از شبکه پُرسمان کنند.

امنیت و اجازه‌ها

‫Android 12 اجازه‌های زیر را برای اطمینان از دسترسی ایمن به شبکه شرکت مخابراتی و داده‌های کاربر معرفی می‌کند:

اجازه android.permission.PERFORM_IMS_SINGLE_REGISTRATION باید توسط برنامه پیام‌رسانی با ویژگی‌های «سرویس‌های ارتباطی غنی» تعریف شود. برای اعطای این اجازه، موارد زیر باید درست باشد:

  • برنامه باید به‌عنوان برنامه دارای امتیاز نصب شود، یعنی ازقبل روی دستگاه نصب شده باشد و اجازه دسترسی به اجازه‌های دارای امتیاز را داشته باشد
  • برنامه باید بااستفاده از RoleManager به‌عنوان نقش پیش‌فرض پیامک کاربر تنظیم شود

اگر هر دو این شرایط برآورده نشود، دسترسی برنامه به اجازه android.permission.PERFORM_IMS_SINGLE_REGISTRATION رد می‌شود. این یعنی برنامه‌های طرف سوم مجاز نیستند به میاناهای برنامه‌سازی کاربردی ثبت‌نام تکی «سرویس‌های ارتباطی غنی» دسترسی داشته باشند زیرا این میاناهای برنامه‌سازی کاربردی به گواهینامه شرکت مخابراتی در دستگاه نیاز دارند.

اجازه android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE وقتی به برنامه‌ای که اجازه READ_CONTACTS را هم دارد داده شود، به برنامه امکان می‌دهد قابلیت‌های «سرویس‌های ارتباطی غنی» شماره تلفن‌ها را بااستفاده از RcsUceAdapter درخواست کند. برای اعطای این اجازه، موارد زیر باید درست باشد:

  • برنامه باید به‌عنوان برنامه ممتاز نصب شود، یعنی ازقبل روی دستگاه نصب شده باشد و اجازه داشته باشد به اجازه‌های ممتاز دسترسی داشته باشد.
  • برنامه باید به‌عنوان یکی از نقش‌های زیر تعریف شود: RoleManager

    • برنامه پیام‌رسانی پیش‌فرض: توسط کاربر تنظیم می‌شود.
    • برنامه شماره‌گیر پیش‌فرض: توسط کاربر تنظیم می‌شود.
    • برنامه مخاطبین پیش‌فرض: نقشی که در Android 12 معرفی شد و به OEM اجازه می‌دهد نام بسته را ازطریق مقدار هم‌پوشانی دستگاه config_systemContacts تعریف کند که باید با برنامه مخاطبین دستگاه مطابقت داشته باشد. سپس نقش مخاطبین به آن برنامه داده می‌شود.

برای دسترسی به IMS APN بااستفاده از ConnectivityManager برای راه‌اندازی و مدیریت داده‌های ترافیک، برنامه‌ها باید اجازه android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS را نیز درخواست کنند.

مثال‌ها و منبع

‫Android برنامه‌ای در AOSP ارائه می‌دهد که برنامه پیام‌رسانی آزمایشی با پشتیبانی پایه از پیام‌رسانی RCS برای اهداف آزمایش و توسعه را پیاده‌سازی می‌کند. می‌توانید برنامه را در testapps/TestRcsApp پیدا کنید. وقتی برنامه در دستگاهی نصب می‌شود، می‌تواند به‌عنوان برنامه پیام‌رسان پیش‌فرض کاربر تنظیم شود و اجازه‌های لازم برای دسترسی به «میاناهای برنامه‌سازی کاربردی ثبت واحد IMS» را خواهد داشت.

Android همچنین یک پیاده‌سازی نمونه از ImsService برای «سرویس‌های ارتباطی غنی» ارائه می‌دهد. کد منبع در /testapps/ImsTestService قرار دارد.

پیاده‌سازی

برای جزئیات بیشتر درباره پیاده‌سازی، ثبت تکی IMS در Android را بارگیری کنید.

اعتبارسنجی

برای تأیید پیاده‌سازی ثبت واحد IMS، کارهای زیر را انجام دهید:

  • مطمئن شوید مجموعه آزمایش CtsTelephonyTestCases CTS قبول شود.
  • برای اجرای چارچوب‌های تست ثبت واحد پایه درطول یکپارچه‌سازی، TestRcsApp را نصب و اجرا کنید.
  • گذراندن گواهی شرکت مخابراتی برای موارد آزمایشی ثبت تکی IMS.