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