بالنسبة إلى الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث، يتيح Android استخدام العديد من الملفات الشخصية المفعَّلة (MEPs) لـ eUICC. تتيح هذه الميزة للأجهزة استخدام شريحتَي SIM باستخدام شريحة eSIM واحدة يمكن أن تتضمّن عدة ملفّات تعريف شريحة SIM ويمكن ربطها بمشغّلَي شبكة جوّال مختلفَين في الوقت نفسه. على مصنعي الأجهزة العمل مع مورّدي شرائح المعالجة المركزية وشرائح eSIM لدمج هذه الميزة في أجهزتهم.
خلفية
على الأجهزة التي تعمل بنظام التشغيل Android 12 والإصدارات الأقدم، يقدّم AOSP دعمًا محدودًا للسماح بشريحة eSIM واحدة بدعم ملفات شخصية متعددة في الوقت نفسه. وعلى الرغم من المساحة الكبيرة وتوفير التكاليف الذي توفِّره شريحة eSIM، فإن عدم التوافق مع شريحتَي SIM يمنع الشركات المصنّعة للأجهزة من استخدام الأجهزة التي تعمل بشريحة eSIM فقط. لتوفير إمكانية استخدام شريحة SIM مزدوجة في جهاز مزوّد بشريحة eSIM فقط، على المصنّعين تضمين عنصرَي eSIM في الجهاز، ما يؤدي إلى زيادة تكاليف فاتورة المواد (BOM) ويؤدي إلى تجربة سيئة للمستخدمين في إدارة الاشتراكات. تعالج ميزة MEP المتوفّرة في AOSP من Android 13 هذه المشكلة.
بنية eUICC
يصف هذا القسم بنية شريحة eSIM للأجهزة التي تتضمّن ميزة MEP لإصدارات Android المختلفة وبنية شريحة eSIM للأجهزة التي لا تتضمّن ميزة MEP.
Android 14
بالنسبة إلى الأجهزة التي تعمل بالإصدار 14 من نظام التشغيل Android أو الإصدارات الأحدث، يتيح Android الخيارَين MEP-A1 وMEP-B لتحديد جذر نطاق الأمان لجهة الإصدار (ISD-R) واختيار منافذ eSIM على النحو المحدّد في GSMA SGP V22 3.0. يوضّح ما يلي نماذج اختيار ISD-R في MEP-A1 وMEP-B.
MEP-A1: يتم اختيار ISD-R على المنفذ 0 (منفذ الأوامر هو 0) ويتم اختيار الملفات الشخصية على منافذ eSIM 1 والإصدارات الأحدث. يتم دائمًا إرسال أوامر ES10 إلى المنفذ 0، ويكون منفذ الأوامر والمنفذ الهدف مختلفين دائمًا. يختار LPA المنفذ.
الشكل 1: نموذج اختيار MEP-A1 ISD-R
MEP-B: يتم اختيار ISD-R على أي منفذ ويمكن تخصيص ملف تعريف لأي منفذ. تُرسَل أوامر التفعيل والإيقاف إلى المنفذ الذي يجب فيه تفعيل الملف الشخصي أو إيقافه (حيث تكون عملية إعادة التحميل معلّقة). يكون منفذ الأوامر والمنفذ المستهدَف دائمًا متطابقَين.
الشكل 2. نموذج اختيار MEP-B ISD-R
Android 13
في الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث، على الأجهزة التي تتيح ميزة MEP، تحتوي قاعدة eSIM على منافذ eUICC متعددة يمكن أن يتضمّن كل منفذ منها ملفًا شخصيًا مفعّلاً. كما هو موضّح في الشكل 3، تتيح هذه البنية الأساسية استخدام شريحة eUICC واحدة (فتحة جسدية واحدة) في وضع "الاستعداد المزدوج لشريحة SIM المزدوجة" (DSDS) من خلال ربط كل منفذ eUICC بوحدة تحكم في النطاق الأساسي لجهاز المودم. لا تعتمد واجهات برمجة التطبيقات وHAL في Android 13 على نوع MEP.
الشكل 3: بنية شريحة eSIM مع إتاحة ميزة MEP (نظام التشغيل Android 13 أو إصدار أحدث)
الإصدار 12 من نظام التشغيل Android والإصدارات الأقدم
بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 12 أو الإصدارات الأقدم بدون ميزة MEP كما هو موضّح في الشكل 4، لا تتيح قاعدة تركيب سيم المصغرة سوى ملف شخصي مفعّل واحد في المرة الواحدة، ولا يمكن للجهاز استخدام ميزة DSDS.
الشكل 4. بنية شريحة eSIM لا تتوافق مع بروتوكول MEP (الإصدار 12 من نظام التشغيل Android أو الإصدارات الأقدم)
تدفّق معلومات واجهة برمجة التطبيقات لملفات شخصية مُفعَّلة متعددة
يصف الشكل 5 تدفق المعلومات لـ MEP لـ eUICC في
Android 13. ويتضمّن إطار عمل الاتصال الهاتفي الفئة UiccPort
التي تمثّل البنية المادية في eUICC. يتم استخدام فئة
UiccPort
لجميع أنواع شرائح SIM: شريحة SIM الفعلية (pSIM)
وشريحة SIM المدمجة (iSIM) وشريحة SIM المضمّنة (eSIM). وفي واجهة eUICC التي تحتوي على منافذ متعددة، يتم ربط عنصر UiccSlot
واحد وعنصر UiccCard
بمثيلات UiccPort
متعددة. يمكن لكل مثيل UiccPort
الربط بمثيل UiccProfile
واحد على الأكثر. يسمح هذا المسار لـ UiccPort
بتعيين خانة منطقية وUiccSlot
(الخانة المادية) لربطه بخانات منطقية متعددة.
الشكل 5. تدفّق المعلومات لشريحة eUICC المتوافقة مع MEP
التنفيذ
يوضّح هذا القسم كيفية تنفيذ ميزة MEP، بما في ذلك تفاصيل حول متطلبات HAL وواجهات برمجة التطبيقات وواجهة المستخدم. على الشركات المصنّعة للأجهزة العمل مع مورّدي شرائح المعالجة المركزية (SoC) ومورّدي شرائح eSIM لتوفير ميزة MEP.
متطلبات HAL
لتفعيل ميزة MEP لشريحة eUICC، عليك تنفيذ واجهات برمجة التطبيقات التالية لواجهة HAL في IRadio AIDL، والتي يمكن العثور عليها
في
/platform/hardware/interfaces/radio/aidl/aidl_api
.
يجب أن تستخدم الأجهزة التي تعمل بنظام التشغيل Android 14 أو الإصدارات الأحدث الإصدار IRadio 2.1 من واجهات HAL
التي تستخدم
MultipleEnabledProfileMode
(نموذج اختيار ISD-R المتوافق مع المودم أو eUICC) وتمرر معلومات أمر ES10 APDU أثناء عمليات القناة المنطقية لـ ICC.
CardStatus
يجب أن يتوافق المودم مع واجهة برمجة التطبيقات
CardStatus
كاستجابة للطريقة
getIccCardStatusResponse
. يجب أن تتضمّن الاستجابة فهرس المنفذ فهرس الفتحة المادية
المحدّد من قِبل
SimPortSlotMapping
.
بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 14 أو إصدار أحدث، يجب أن يمرّ المودم بحالة وضع MEP المتوافق مع جميع أحداث CardStatus.
SimSlotStatus
يجب أن يتوافق المودم مع واجهة برمجة التطبيقات
SimSlotStatus
كاستجابة للطريقة
getSimSlotsStatus
. تتضمّن حالة فتحة شريحة SIM صفيفًا من واجهة
SimPortInfo
، والتي تتضمّن فهرس المنفذ ورقم ICCID للملف الشخصي المفعّل
وحالة المنفذ. يجب أن يعرض المودم عنصرَي SimPortInfo
على الأقل.
بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 14 أو إصدار أحدث، يجب أن يمرّ المودم بوضع MEP المتوافق مع جميع أحداث CardStatus.
setSimSlotMapping
يجب أن تمرِّر الطريقة
setSimSlotMapping
مصفوفة من
SimPortSlotMapping
.
فهرس الصفيف هو الفتحة المنطقية وSimPortSlotMapping
يحدّد المنفذ المرتبط والفتحة المادية المرتبطَين
بفهرس الفتحة. تُستخدَم طريقة setSimSlotMapping
لضبط عملية الربط من المنافذ إلى المربّعات
المنطقية. يستخدم تطبيق LPA
هذه الطريقة لاختيار المنفذ النشط.
واجهات برمجة التطبيقات التي توفّر ميزة MEP لبطاقة eUICC
يجب أن تكون أجهزة Android متوافقة مع واجهات برمجة التطبيقات التالية إذا كانت تتيح استخدام ملفات شخصية متعدّدة مفعّلة كجزء من حِزمة AOSP للاتصالات.
UiccCardInfo
- (الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث)
isMultipleEnabledProfilesSupported
: يعرض ما إذا كانت واجهة UICC هذه متوافقة مع MEP. - (الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث)
getPorts
: يعرض قائمة بجميع المنافذ الممكنة لبطاقة UICC معيّنة. إذا كان ملف تعريف UICC هو ملف تعريف شريحة pSIM أو شريحة eSIM لا تتوافق مع MEP، يتم عرض قائمة بعنصر واحد. - (تم إيقافه نهائيًا)
getIccId
: يعرض معرّف ICCID. وبما أنّ بطاقة UICC يمكن أن تحتوي على أكثر من رقم ICCID واحد للأجهزة التي تستخدم MEP، استخدِمUiccPortInfo.getIccId()
بدلاً من ذلك.
(Android 13 والإصدارات الأحدث) UiccPortInfo
-
getIccId
: يعرض رقم ICCID في حال توفّر اشتراك مفعّل على هذا المنفذ. getPortIndex
: عرض فهرس المنفذ.getLogicalSlotIndex
: عرض فهرس تكديس المودم المنطقي النشط.
SubscriptionInfo
- (الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث)
getPortIndex
: يعرض فهرس المنفذ الذي تم تفعيل الاشتراك عليه. إذا كان الاشتراك غير مفعّل، يتم عرض القيمةINVALID_PORT_ID -1
.
EuiccManager
switchToSubscription
: التبديل إلى اشتراك معيّن تُستخدَم هذه الإذنات من قِبل التطبيقات التي لا تملك امتيازات مشغّل شبكة الجوَّال على الاشتراكات النشطة. عند الطلب، تُحلّ المنصة فهرس المنفذ داخليًا من خلال مربّع حوار لاختيار أحد الخيارات الثلاثة بهدف إيقاف الاشتراك النشط المحدّد في حال عدم توفّر منافذ. يجب ألا تستخدم التطبيقات التي تستهدف الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث واجهة برمجة التطبيقات هذه لإيقاف اشتراك من خلال إرسال معرّف اشتراك غير صالح، وبدلاً من ذلك، يجب استخدام الأسلوبswitchToSubscription
(الذي تمت إضافته في Android 13) مع فهرس المنفذ المحدّد.- (الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث)
switchToSubscription(int subscriptionId, int portIndex, PendingIntent callback)
: التبديل إلى اشتراك معيّن يمكن للتطبيقات التي تتصل بشبكة الجوّال وتتمتع بامتيازات مشغّل شبكة الجوّال في ما يتعلّق بالاشتراكات النشطة تحديد المنفذ الذي سيتم تفعيل الاشتراك عليه. - (الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث)
isSimPortAvailable
: يعرض ما إذا كان فهرس المنفذ الذي تم تمريره متاحًا. يكون المنفذ متاحًا إذا لم يكن لديه اشتراك مفعَّل أو إذا كان تطبيق الاتصال يمتلك امتياز مشغّل شبكة الجوَّال على الاشتراك المثبَّت على المنفذ المحدَّد.
خدمة EuiccService
- (Android 13 والإصدارات الأحدث)
onSwitchToSubscriptionWithPort
: التبديل إلى اشتراك معيّن على منفذ محدّد يجب أن يتيح تنفيذ LPA ذلك على نظام التشغيل Android 13 والإصدارات الأحدث.
TelephonyManager
- (الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث)
getSimApplicationState
: يعرض ثابتًا يشير إلى حالة طلب البطاقة. تمرّ واجهة برمجة التطبيقات هذه بمؤشر الفتحة المادية ومؤشر المنفذ. لا تمرِّر الطريقةgetSimApplicationState(int physicalSlotIndex)
(المتوقفة نهائيًا) سوى فهرس الفتحة المادية للحصول على عنصرsimApplicationState
. - (الإصدار 13 من Android والإصدارات الأحدث)
setSimSlotMapping(Collection<UiccSlotMapping> slots)
: تُعرِض هذه السمة الفتحات المنطقية في الفتحات والمنافذ الفعلية. - (Android 13 والإصدارات الأحدث)
Collection<UiccSlotMapping> getSimSlotMapping
: يحصل على التعيين من الفتحات المنطقية إلى فتحات شريحة SIM الفعلية ومؤشرات المنافذ.
واجهة المستخدم
لحلّ الغموض في اختيار منفذ eSIM، على الأجهزة المتوافقة مع MEP، يجب أن يتمكّن المستخدمون من إيقاف أحد الاشتراكات النشطة لتفعيل اشتراك جديد. في Android 13، يتضمّن AOSP مسار مستخدم يتضمّن مربّع حوار يتضمّن ثلاثة خيارات يمكن تطبيقه على مسارات المستخدمين التي تتيح الاشتراك من تطبيق "الإعدادات". يعرض الشكل 6 مثالاً على مسار تجربة المستخدم هذا.
الشكل 6: مسار المستخدم لتفعيل اشتراك شريحة SIM
مفاتيح تبديل أوضاع الميزات
لتتوافق الأجهزة مع ميزة MEP، يجب أن تعلن عن ميزات الإصدارات التجريبية التالية:
تنفيذ إعلانات الأنشطة التجارية المحلية
لتفعيل ميزة MEP، تأكَّد من أنّ عملية تنفيذ LPA تستوفي المتطلبات التالية:
- تنفيذ واجهات برمجة التطبيقات من EuiccService لتفعيل منافذ متعددة
- يستخدم واجهات برمجة التطبيقات لاختيار المنفذ وتفعيل الملف الشخصي.
- توفر تجربة مستخدم تتيح لتطبيقات مشغّلي شبكة الجوّال تفعيل الملفات الشخصية على منافذ محددة.
التحقُّق
لاختبار تنفيذ ميزة MEP، تأكَّد من اجتياز النُسخ ملفّات اختبار CTS التالية (لواجهات برمجة التطبيقات المتاحة للجميع):
/platform/cts/tests/tests/telephony/current/src/android/telephony/euicc/cts
.
على الشركات المصنّعة للأجهزة أيضًا التعاون مع مورّدي أجهزة المودم وشريحة eUICC ونظام تشغيل eSIM لضمان أن يكون بإمكان الجهاز تنفيذ ما يلي:
- يمكن تفعيل ملفَّين شخصيَّين لشريحة eSIM وإرفاقها بشبكتَين مختلفتَين.
- يمكن تفعيل الملفات الشخصية لشريحة eSIM أو إيقافها على أي منفذ eSIM.
- هناك مسار تجربة مستخدِم يبدأ من تطبيق مشغّل شبكة الجوّال ويسمح للمستخدِمين بالتبديل بين الملفات الشخصية.
اقتراح لمشغّلي شبكات الجوّال
لضمان عدم انقطاع الخدمة لدى المستخدمين عند نقل الملفات الشخصية لشرائح eSIM من منفذ إلى آخر، ننصحك بأن توفّر شركات الجوّال الدعم لتنفيذ ما يلي:
- ربط رمزَي IMEI وSIM بسلاسة
- أرقام ICCID أو شرائح SIM متعدّدة لكل معرّف eUICC (EID)