IMS প্রয়োগ করুন

Android 9 আপনাকে IP মাল্টিমিডিয়া সাবসিস্টেম (IMS) বাস্তবায়নে সহায়তা করার জন্য ImsService নামে একটি SystemApi ইন্টারফেস প্রবর্তন করেছে। ImsService API হল Android প্ল্যাটফর্ম এবং একটি বিক্রেতা বা ক্যারিয়ার-প্রদত্ত IMS বাস্তবায়নের মধ্যে একটি সু-সংজ্ঞায়িত ইন্টারফেস।

ImsService ওভারভিউ

চিত্র 1. ImsService ওভারভিউ

ImsService ইন্টারফেস ব্যবহার করে, IMS বাস্তবায়নকারী প্ল্যাটফর্মে গুরুত্বপূর্ণ সিগন্যালিং তথ্য প্রদান করতে পারে, যেমন IMS রেজিস্ট্রেশন তথ্য, SMS ওভার IMS ইন্টিগ্রেশন এবং MmTel ফিচার ইন্টিগ্রেশন ভয়েস এবং ভিডিও কলিং প্রদান করতে। ImsService API একটি অ্যান্ড্রয়েড সিস্টেম এপিআই, যার অর্থ এটি উৎসের পরিবর্তে সরাসরি Android SDK-এর বিরুদ্ধে তৈরি করা যেতে পারে। একটি IMS অ্যাপ যা ডিভাইসে আগে থেকে ইনস্টল করা আছে সেটিকে প্লে স্টোর আপডেট করার জন্য কনফিগার করা যেতে পারে।

উদাহরণ এবং উৎস

অ্যান্ড্রয়েড AOSP-এ একটি অ্যাপ সরবরাহ করে যা পরীক্ষা এবং উন্নয়নের উদ্দেশ্যে ImsService API-এর কিছু অংশ প্রয়োগ করে। আপনি /testapps/ImsTestService- এ অ্যাপটি খুঁজে পেতে পারেন।

আপনি ImsService API-এর জন্য ImsService- এ এবং API-এর অন্যান্য ক্লাসে ডকুমেন্টেশন খুঁজে পেতে পারেন।

বাস্তবায়ন

ImsService API হল একটি উচ্চ স্তরের API যা আপনাকে উপলব্ধ হার্ডওয়্যারের উপর নির্ভর করে অনেক উপায়ে IMS বাস্তবায়ন করতে দেয়। উদাহরণস্বরূপ, IMS বাস্তবায়ন সম্পূর্ণরূপে অ্যাপ প্রসেসরে আছে কিনা বা এটি আংশিকভাবে বা সম্পূর্ণরূপে মডেমে অফলোড করা হয়েছে কিনা তার উপর নির্ভর করে বাস্তবায়ন পরিবর্তিত হয়। বেসব্যান্ড প্রসেসরে অফলোড করার জন্য অ্যান্ড্রয়েড একটি পাবলিক HAL প্রদান করে না, তাই মডেমে আপনার HAL এক্সটেনশন ব্যবহার করে যেকোনো অফলোডিং ঘটতে হবে।

পুরানো IMS বাস্তবায়নের সাথে সামঞ্জস্য

যদিও Android 9-এ ImsService API অন্তর্ভুক্ত রয়েছে, IMS-এর জন্য একটি পুরানো বাস্তবায়ন ব্যবহার করে এমন ডিভাইসগুলি API সমর্থন করতে সক্ষম নয়। এই ডিভাইসগুলির জন্য, পুরানো AIDL ইন্টারফেস এবং র‍্যাপার ক্লাসগুলি android.telephony.ims.compat নামস্থানে সরানো হয়েছে৷ অ্যান্ড্রয়েড 9 এ আপগ্রেড করার সময়, পুরানো এপিআই সমর্থন চালিয়ে যেতে পুরানো ডিভাইসগুলিকে নিম্নলিখিতগুলি করতে হবে৷

  • android.telephony.ims.compat নামস্থান API থেকে প্রসারিত করতে ImsService বাস্তবায়নের নামস্থান পরিবর্তন করুন।
  • android.telephony.ims.ImsService android.telephony.ims.compat.ImsService -ফিল্টার অ্যাকশন ব্যবহার করতে AndroidManifest.xml-এ ImsService পরিষেবার সংজ্ঞা পরিবর্তন করুন।

ফ্রেমওয়ার্কটি তখন লিগ্যাসি ImsService বাস্তবায়নের সাথে কাজ করার জন্য Android 9-এ প্রদত্ত সামঞ্জস্যপূর্ণ স্তর ব্যবহার করে ImsService-এর সাথে আবদ্ধ হবে।

ফ্রেমওয়ার্কের সাথে ImsService নিবন্ধন

ImsService API একটি পরিষেবা হিসাবে প্রয়োগ করা হয়, যা Android ফ্রেমওয়ার্ক আইএমএস বাস্তবায়নের সাথে যোগাযোগ করার জন্য আবদ্ধ করে। ফ্রেমওয়ার্কের সাথে একটি ImsService প্রয়োগ করে এমন একটি অ্যাপ নিবন্ধন করার জন্য তিনটি ধাপ প্রয়োজন। প্রথমে, ImsService বাস্তবায়নকে অবশ্যই অ্যাপের AndroidManifest.xml ব্যবহার করে প্ল্যাটফর্মের সাথে নিবন্ধন করতে হবে; দ্বিতীয়ত, এটি অবশ্যই সংজ্ঞায়িত করতে হবে যে কোন IMS বৈশিষ্ট্যগুলি বাস্তবায়ন সমর্থন করে (MmTel বা RCS); এবং তৃতীয়, এটি ক্যারিয়ার কনফিগারেশন বা ডিভাইস ওভারলেতে বিশ্বস্ত IMS বাস্তবায়ন হিসাবে যাচাই করা আবশ্যক।

পরিষেবা সংজ্ঞা

IMS অ্যাপ নিম্নলিখিত বিন্যাসটি ব্যবহার করে ম্যানিফেস্টে একটি service এন্ট্রি যুক্ত করে ফ্রেমওয়ার্কের সাথে একটি ImsService নিবন্ধন করে:

<service
    android:name="com.egcorp.ims.EgImsService"
    android:directBootAware="true"
    Android:persistent="true"
    ...
    android:permission="android.permission.BIND_IMS_SERVICE" >
    ...
    <intent-filter>
        <action android:name="android.telephony.ims.ImsService" />
    </intent-filter>
</service>

AndroidManifest.xmlservice সংজ্ঞা নিম্নলিখিত বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করে, যা সঠিক অপারেশনের জন্য প্রয়োজনীয়:

  • directBootAware="true" : ব্যবহারকারী ডিভাইসটি আনলক করার আগে পরিষেবাটিকে telephony দ্বারা আবিষ্কার এবং চালানোর অনুমতি দেয়৷ ব্যবহারকারী ডিভাইসটি আনলক করার আগে পরিষেবাটি ডিভাইস এনক্রিপ্ট করা স্টোরেজ অ্যাক্সেস করতে পারে না। আরও তথ্যের জন্য, সমর্থন সরাসরি বুট মোড এবং ফাইল-ভিত্তিক এনক্রিপশন দেখুন।
  • persistent="true" : এই পরিষেবাটিকে অবিরামভাবে চালানোর অনুমতি দেয় এবং মেমরি পুনরুদ্ধার করার জন্য সিস্টেমের দ্বারা হত্যা করা হয় না। এই বৈশিষ্ট্যটি শুধুমাত্র তখনই কাজ করে যদি অ্যাপটি একটি সিস্টেম অ্যাপ হিসেবে তৈরি করা হয়।
  • permission="android.permission.BIND_IMS_SERVICE" : নিশ্চিত করে যে শুধুমাত্র একটি প্রসেস যার কাছে BIND_IMS_SERVICE অনুমতি দেওয়া হয়েছে তা অ্যাপের সাথে আবদ্ধ হতে পারে। এটি একটি দুর্বৃত্ত অ্যাপকে পরিষেবার সাথে আবদ্ধ হতে বাধা দেয়, যেহেতু শুধুমাত্র সিস্টেম অ্যাপগুলিকে ফ্রেমওয়ার্ক দ্বারা অনুমতি দেওয়া যেতে পারে৷

পরিষেবাটিকে অবশ্যই android.telephony.ims.ImsService অ্যাকশনের সাথে intent-filter উপাদান উল্লেখ করতে হবে। এটি ফ্রেমওয়ার্কটিকে ImsService খুঁজে পেতে অনুমতি দেয়।

আইএমএস বৈশিষ্ট্য স্পেসিফিকেশন

AndroidManifest.xml-এ একটি Android পরিষেবা হিসাবে ImsService-কে সংজ্ঞায়িত করার পরে, ImsService-কে অবশ্যই সংজ্ঞায়িত করতে হবে যে এটি কোন IMS বৈশিষ্ট্যগুলি সমর্থন করে৷ অ্যান্ড্রয়েড বর্তমানে MmTel এবং RCS বৈশিষ্ট্যগুলিকে সমর্থন করে, তবে শুধুমাত্র MmTel ফ্রেমওয়ার্কে একত্রিত করা হয়েছে। যদিও ফ্রেমওয়ার্কের মধ্যে কোনো RCS API একত্রিত করা হয়নি, তবুও এটিকে ImsService-এর বৈশিষ্ট্য হিসেবে ঘোষণা করার সুবিধা রয়েছে।

নীচে android.telephony.ims.ImsFeature এ সংজ্ঞায়িত বৈধ বৈশিষ্ট্যগুলি রয়েছে যা একটি ImsService প্রদান করতে পারে এবং একটি IMS অ্যাপ কেন এই বৈশিষ্ট্যগুলির একটি বা সমস্তগুলি প্রয়োগ করতে চায় তার একটি ব্যাখ্যা এবং উদাহরণ৷ প্রতিটি বৈশিষ্ট্য সংজ্ঞায়িত করার পরে, এই পৃষ্ঠাটি রূপরেখা দেয় কিভাবে ImsService প্রতিটি সিম স্লটের জন্য নির্দিষ্ট বৈশিষ্ট্যগুলির সেট ঘোষণা করে৷

FEATURE_MMTEL

ImsService IMS MMTEL বৈশিষ্ট্যটি প্রয়োগ করে, যাতে জরুরি কলের জন্য IMS PDN-এর সাথে জরুরী সংযুক্তি ব্যতীত সমস্ত IMS মিডিয়া (IR.92 এবং IR.94 স্পেসিফিকেশন) এর জন্য সমর্থন রয়েছে। ImsService এর যেকোন বাস্তবায়ন যে MMTEL বৈশিষ্ট্যগুলিকে সমর্থন করতে চায় তার android.telephony.ims.MmTelFeature বেস ক্লাস প্রসারিত করা উচিত এবং ImsService#createMmTelFeature এ একটি কাস্টম MmTelFeature বাস্তবায়ন ফিরিয়ে দেওয়া উচিত।

FEATURE_EMERGENCY_MMTEL

এই বৈশিষ্ট্যটি ঘোষণা করা শুধুমাত্র প্ল্যাটফর্মে সংকেত দেয় যে জরুরি পরিষেবাগুলির জন্য IMS PDN-এর সাথে জরুরী সংযুক্তি সম্ভব। এই বৈশিষ্ট্যটি আপনার ImsService জন্য ঘোষিত না হলে, জরুরী পরিষেবার জন্য প্ল্যাটফর্মটি সর্বদা সার্কিট সুইচ ফলব্যাকে ডিফল্ট হবে। এই বৈশিষ্ট্যটি সংজ্ঞায়িত করার জন্য FEATURE_MMTEL বৈশিষ্ট্যটিকে অবশ্যই সংজ্ঞায়িত করতে হবে৷

FEATURE_RCS

ImsService API কোনো IMS RCS বৈশিষ্ট্য বাস্তবায়ন করে না, কিন্তু android.telephony.ims.RcsFeature বেস ক্লাস এখনও কার্যকর হতে পারে। ফ্রেমওয়ার্ক স্বয়ংক্রিয়ভাবে ImsService-এর সাথে আবদ্ধ হয় এবং ImsService#createRcsFeature কল করে যখন এটি সনাক্ত করে যে প্যাকেজটি RCS প্রদান করবে। যদি RCS পরিষেবার সাথে যুক্ত SIM কার্ডটি সরানো হয়, ফ্রেমওয়ার্ক স্বয়ংক্রিয়ভাবে RcsFeature#onFeatureRemoved কল করে এবং তারপরে RCS বৈশিষ্ট্যের সাথে যুক্ত ImsService পরিষ্কার করে। এই কার্যকারিতা কিছু কাস্টম সনাক্তকরণ বা বাঁধাই লজিক অপসারণ করতে পারে যা অন্যথায় একটি RCS বৈশিষ্ট্য প্রদান করতে হবে।

সমর্থিত বৈশিষ্ট্য নিবন্ধন

টেলিফোনি ফ্রেমওয়ার্ক প্রথমে ImsService-এর সাথে আবদ্ধ হয় যে বৈশিষ্ট্যগুলি এটি ImsService#querySupportedImsFeatures API ব্যবহার করে সমর্থন করে তা অনুসন্ধান করতে। ImsService কোন বৈশিষ্ট্যগুলিকে সমর্থন করবে তা ফ্রেমওয়ার্ক গণনা করার পরে, এটি ImsService#create[...]Feature কল করবে যার জন্য ImsService দায়ী থাকবে৷ যদি IMS অ্যাপ সমর্থন করে এমন বৈশিষ্ট্যগুলি পরিবর্তন করে, আপনি সমর্থিত বৈশিষ্ট্যগুলি পুনঃগণনা করার জন্য ফ্রেমওয়ার্ককে সংকেত দিতে ImsService#onUpdateSupportedImsFeatures ব্যবহার করতে পারেন। ImsService এর প্রারম্ভিকতা এবং বাঁধাই সম্পর্কে আরও তথ্যের জন্য নিম্নলিখিত চিত্রটি দেখুন।

ImsService আরম্ভ এবং বাঁধাই

চিত্র 2: ImsService প্রাথমিককরণ এবং বাঁধাই

একটি ImsService বাস্তবায়নের ফ্রেমওয়ার্ক সনাক্তকরণ এবং যাচাইকরণ

একবার AndroidManifest.xml-এ ImsService সঠিকভাবে সংজ্ঞায়িত হয়ে গেলে, উপযুক্ত হলে প্ল্যাটফর্মটিকে (নিরাপদভাবে) ImsService-এর সাথে আবদ্ধ হওয়ার জন্য কনফিগার করতে হবে। দুই ধরনের ImsServices আছে যেগুলির সাথে ফ্রেমওয়ার্ক আবদ্ধ হয়:

  1. ক্যারিয়ার "ওভাররাইড" ImsService: এই ImsServiceগুলি ডিভাইসে আগে থেকে লোড করা হয় কিন্তু এক বা একাধিক সেলুলার ক্যারিয়ারের সাথে সংযুক্ত থাকে এবং একটি ম্যাচিং সিম কার্ড ঢোকানো হলেই আবদ্ধ হবে৷ এটি ব্যবহার করে কনফিগার করা হয়েছে
  2. ডিভাইস "ডিফল্ট" ImsService: এটি একটি ডিফল্ট ImsService যা একটি OEM দ্বারা ডিভাইসে লোড করা হয় এবং যখন একটি ক্যারিয়ার ImsService উপলব্ধ না থাকে এবং ডিভাইসটির কোনো সিম কার্ড নেই এমন পরিস্থিতিতে উপযোগী হয় এমন সমস্ত পরিস্থিতিতে IMS পরিষেবা প্রদানের জন্য ডিজাইন করা উচিত। ঢোকানো বা ঢোকানো সিম কার্ডের সাথে একটি ক্যারিয়ার ImsService ইনস্টল করা নেই। এটি নিম্নলিখিত কনফিগারেশনগুলি ব্যবহার করে ডিভাইস ওভারলেতে সংজ্ঞায়িত করা হয়েছে:

অ্যান্ড্রয়েড তৃতীয় পক্ষের ডাউনলোডযোগ্য ImsService বাস্তবায়নের সাথে অ্যাপগুলিকে সমর্থন করে না, তাই এখানে সংজ্ঞায়িত যেকোনো ImsService বাস্তবায়নকে সিস্টেম অ্যাপ হতে হবে এবং উপযুক্ত অনুমোদনের জন্য অবশ্যই /system/priv-app/ অথবা /product/priv-app/ ফোল্ডারে থাকতে হবে। অনুমতি (যেমন ফোন, মাইক্রোফোন, অবস্থান, ক্যামেরা, এবং পরিচিতি অনুমতি)। IMS বাস্তবায়নের প্যাকেজের নাম CarrierConfig বা উপরে বর্ণিত ডিভাইস ওভারলে মানগুলির সাথে মেলে কিনা তা যাচাই করে, শুধুমাত্র বিশ্বস্ত, আগে থেকে ইনস্টল করা অ্যাপগুলি আবদ্ধ।

কাস্টমাইজেশন

একটি ImsService বাস্তবায়নকারী অ্যাপগুলি শুধুমাত্র সেই ডিভাইসগুলিতে আবদ্ধ যেখানে সেগুলি MMTEL বা RCS কার্যকারিতার জন্য "ওভাররাইড" ImsService বা ডিভাইস "ডিফল্ট" ImsService কনফিগারেশন হিসাবে কনফিগার করা হয়েছে৷ ImsService এছাড়াও IMS বৈশিষ্ট্যগুলিকে অনুমতি দেয় যা এটি সমর্থন করে (MMTEL এবং RCS) ImsService#onUpdateSupportedImsFeatures পদ্ধতি ব্যবহার করে আপডেটগুলি ব্যবহার করে গতিশীলভাবে সক্রিয় বা নিষ্ক্রিয় করতে। এটি কোন ImsServices আবদ্ধ এবং কোন বৈশিষ্ট্যগুলি তারা সমর্থন করে তা পুনরায় গণনা করতে ফ্রেমওয়ার্ককে ট্রিগার করে৷ যদি IMS অ্যাপটি সমর্থিত কোনো বৈশিষ্ট্য ছাড়াই ফ্রেমওয়ার্ক আপডেট করে, তাহলে ফোন রিবুট না হওয়া পর্যন্ত বা IMS অ্যাপের সাথে মেলে এমন একটি নতুন সিম কার্ড ঢোকানো না হওয়া পর্যন্ত ImsService আনবাউন্ড থাকবে।

একাধিক ImsService জন্য বাধ্যতামূলক অগ্রাধিকার

ফ্রেমওয়ার্কটি ডিভাইসে প্রিলোড করা সম্ভাব্য সমস্ত ImsServices-এর সাথে বাঁধাই সমর্থন করতে পারে না এবং প্রতি-ফিচার ভিত্তিতে নিম্নলিখিত ক্রমানুসারে প্রতি সিম স্লটে দুটি পর্যন্ত ImsServices (প্রতিটি বৈশিষ্ট্যের জন্য একটি ImsService) আবদ্ধ হবে:

  1. ImsService প্যাকেজ নামটি CarrierConfig মান config_ims_[mmtel/rcs]_package_override_string দ্বারা সংজ্ঞায়িত করা হয় যখন একটি সিম কার্ড ঢোকানো থাকে।
  2. config_ims_[mmtel/rcs]_package এর জন্য ডিভাইসের ওভারলে মানের মধ্যে সংজ্ঞায়িত ImsService প্যাকেজের নাম যেখানে কোনো সিম কার্ড ঢোকানো নেই। এই ImsService অবশ্যই জরুরি MmTel বৈশিষ্ট্য সমর্থন করবে।

আপনার ImsService-এর প্যাকেজ নামটি অবশ্যই CarrierConfig-এ সংজ্ঞায়িত প্রতিটি ক্যারিয়ারের জন্য থাকতে হবে যারা সেই প্যাকেজটি ব্যবহার করবে বা ডিভাইস ওভারলেতে যদি আপনার ImsService ডিফল্ট হবে, যেমন উপরে সংজ্ঞায়িত করা হয়েছে।

আসুন প্রতিটি বৈশিষ্ট্যের জন্য এটি ভেঙে দেওয়া যাক। একটি ডিভাইসের জন্য (একক বা মাল্টি-সিম) একটি সিম কার্ড লোড করা হলে, দুটি IMS বৈশিষ্ট্য সম্ভব: MMTel এবং RCS। ফ্রেমওয়ার্কটি প্রতিটি বৈশিষ্ট্যের জন্য উপরে সংজ্ঞায়িত ক্রমে আবদ্ধ করার চেষ্টা করবে এবং ক্যারিয়ার কনফিগারেশন ওভাররাইডে সংজ্ঞায়িত ImsService-এর জন্য বৈশিষ্ট্যটি উপলব্ধ না হলে, ফ্রেমওয়ার্কটি আপনার ডিফল্ট ImsService-এ পড়ে যাবে। সুতরাং, উদাহরণস্বরূপ, নীচের সারণীটি বর্ণনা করে যে কোন IMS বৈশিষ্ট্যটি ফ্রেমওয়ার্কটি ব্যবহার করবে নিম্নলিখিত বৈশিষ্ট্য সহ একটি সিস্টেমে ImsServices ইন্সটল করার জন্য তিনটি IMS অ্যাপ প্রদত্ত:

  • ক্যারিয়ার A ImsService RCS সমর্থন করে
  • ক্যারিয়ার B ImsService RCS এবং MMTel সমর্থন করে
  • OEM ImsService RCS এবং MMTel সমর্থন করে
সিম কার্ড ঢোকানো হয়েছে আরসিএস বৈশিষ্ট্য এমএমটেল বৈশিষ্ট্য
বাহক এ বাহক এ ই এম
বাহক বি বাহক বি বাহক বি
সিম নেই ই এম ই এম

বৈধতা

আইএমএস বাস্তবায়ন নিজেই যাচাই করার জন্য সরঞ্জামগুলি অন্তর্ভুক্ত করা হয় না যেহেতু IMS স্পেসিফিকেশনগুলি অত্যন্ত বড় এবং বিশেষ যাচাইকরণ সরঞ্জাম ব্যবহার করে৷ পরীক্ষাগুলি শুধুমাত্র যাচাই করতে পারে যে টেলিফোনি ফ্রেমওয়ার্ক সঠিকভাবে ImsService API-কে সাড়া দেয়।

একটি IMS অ্যাপ তৈরি করুন

Android টেলিফোনি স্ট্যাকের সাথে ইন্টারফেস করে এমন একটি IMS অ্যাপ ডেভেলপ করার সময়, আমরা একটি নির্দিষ্ট ক্যারিয়ার সাবস্ক্রিপশনের জন্য সংযুক্ত ImsService ইন্সট্যান্সের অবস্থা শুনতে বা সংশোধন করতে পারে তা নির্দিষ্ট করার পরামর্শ দিই।

MMTEL এবং RCS বৈশিষ্ট্যগুলির জন্য ImsService-এর অবস্থা শুনতে বা সংশোধন করতে, ImsMmTelManager , ImsRcsManager , বা IMS-নির্দিষ্ট ProvisioningManager ক্লাসের একটি উদাহরণ পেতে ImsManager ক্লাসটি ব্যবহার করুন৷ অ্যাপটি তখন IMS-নির্দিষ্ট পরিষেবা এবং প্রভিশনিং স্টেটগুলি শুনতে পারে যেমন:

  • MMTEL বা RCS বৈশিষ্ট্য যা সক্ষম এবং উপলব্ধ
  • IMS রেজিস্ট্রেশনের অবস্থা পরিবর্তন হলে আপডেট
  • আইএমএস বৈশিষ্ট্যের প্রভিশনিং স্ট্যাটাস
  • IMS বৈশিষ্ট্যগুলি ব্যবহারকারী সক্ষম করেছে৷

ImsStateCallback ব্যবহার করুন

যদিও ImsService একটি ক্রমাগত আবদ্ধ পরিষেবা, আবদ্ধ পরিষেবাটি পরিবর্তিত হতে পারে যখন একটি নতুন সিম কার্ড বা এমবেডেড সাবস্ক্রিপশন সক্রিয় হয় বা যখন একটি ক্যারিয়ার কনফিগারেশন পরিবর্তন হয়। যেহেতু ImsService টেলিফোনি প্রক্রিয়ার অংশ নয়, তাই একটি অ্যাপ IMS API অ্যাক্সেস করার চেষ্টা করার সময় অপ্রত্যাশিত ব্যতিক্রমগুলি অনুভব করতে পারে যদি ImsService অদৃশ্যভাবে ক্র্যাশ হয় বা সদস্যতা বা কনফিগারেশন পরিবর্তনের কারণে আনবাউন্ড হয়।

অ্যান্ড্রয়েড 13 বা উচ্চতর ডিভাইসে, সংশ্লিষ্ট সাবস্ক্রিপশনের জন্য ImsService ইন্সট্যান্স উপলব্ধ বা অনুপলব্ধ কিনা তা নিরীক্ষণ করতে, একটি অ্যাপ ImsStateCallback ক্লাস ব্যবহার করতে পারে। ImsMmTelManager বা ImsRcsManager এর একটি উদাহরণ পাওয়ার সময়, আমরা সুপারিশ করি যে অ্যাপটি প্রথমে ImsMmTelManager#registerImsStateCallback বা ImsRcsManager#registerImsStateCallback ব্যবহার করে একটি IMS স্টেট কলব্যাকের জন্য নিবন্ধন করুন। ImsService আবার উপলব্ধ হলে নির্দিষ্ট সাবস্ক্রিপশনের জন্য কলব্যাক আপডেট পাওয়া চালিয়ে যেতে, অ্যাপটিকে অবশ্যই ImsMmTelManager , ImsRcsManager , বা ProvisioningManager মাধ্যমে নিবন্ধিত বিদ্যমান কলব্যাকগুলিকে আনরেজিস্টার বা বাতিল করতে হবে; এবং নতুন কলব্যাক নিবন্ধন করুন।

যদি এমন কোনো সাবস্ক্রিপশন থাকে যা IMS সমর্থন করে না, তাহলে ফ্রেমওয়ার্কটি REASON_NO_IMS_SERVICE_CONFIGURED কারণের সাথে ImsStateCallback#onUnavailable কল করে। এর অর্থ হল সাবস্ক্রিপশনের জন্য ImsService এবং IMS-সম্পর্কিত APIগুলি উপলব্ধ নয়৷

টেলিফোনি প্রক্রিয়া ক্র্যাশ হওয়ার সম্ভাবনা কম হলে, অ্যাপটি ImsStateCallback#onError পায় এবং নিবন্ধিত ImsStateCallback দৃষ্টান্তে আর আপডেট পায় না। এই অবস্থা থেকে পুনরুদ্ধার করতে, ImsMmTelManager#registerImsStateCallback বা ImsRcsManager#registerImsStateCallback কল করে সংশ্লিষ্ট সাবস্ক্রিপশনের জন্য ImsStateCallback দৃষ্টান্ত পুনরায় নিবন্ধন করুন।