رسیدگی به خطاهای «میانای برنامه‌سازی کاربردی eUICC»

واسط‌های برنامه‌نویسی کاربردی eUICC کدهای خطا را ارائه می‌دهند تا به برنامه‌ها و کاربران در عیب‌یابی مشکلات مربوط به بارگیری، فعال‌سازی، غیرفعال‌سازی، و حذف نمایه‌های سیم‌کارت داخلی کمک کنند.

مدیریت کردن خطاها

وقتی هنگام فراخوانی «میانای برنامه‌سازی کاربردی eUICC» خطایی رخ می‌دهد، یک برگشت هدف معلقه ارائه می‌شود و EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE به‌عنوان کلید دریافت کد خطای دقیق استفاده می‌شود. از Android 11، چهار کلید و مقدار زیر در هدف نتیجه گنجانده شده است:

  • EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE: اطلاعاتی درباره اینکه چه چیزی اشتباه بوده است ارائه می‌دهد. برای مثال، بارگیری یا حذف نمایه سیم‌کارت داخلی. این فیلد هرگز خالی نیست.
  • EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE: اطلاعات درباره دلیل بروز خطا. برای مثال، درخواست زمان‌بندی شده است یا دستگاه قفل شرکت مخابراتی دارد. این فیلد در موارد زیر درج نمی‌شود:

  • EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE: با EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE استفاده می‌شود که با هم «کد موضوع» [5.2.6.1] و «کد دلیل» [5.2.6.2] را از GSMA (SGP.22 v2.2) ارائه می‌دهند. این فیلد فقط زمانی درج می‌شود که کد عملیات OPERATION_SMDX_SUBJECT_REASON_CODE باشد.

  • EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE: با EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE استفاده می‌شود که با هم «کد موضوع» [5.2.6.1] و «کد دلیل» [5.2.6.2] را از GSMA (SGP.22 v2.2) ارائه می‌دهند. این فیلد فقط زمانی تکمیل می‌شود که کد عملیات OPERATION_SMDX_SUBJECT_REASON_CODE باشد.

این چهار مقدار به فراخواننده میانای برنامه‌سازی کاربردی eUICC اجازه می‌دهد خطاهای خاص را به‌طور جداگانه مدیریت کند. در زیر مثالی از نحوه رسیدگی به این خطاها آورده شده است.

int operationCode = intent.get(EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE)
int errorCode = intent.get(EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE)
String smdxSubjectCode = intent.get(EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE)
String smdxReasonCode = intent.get(EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE)

if (operationCode == OPERATION_DOWNLOAD && errorCode == ERROR_CARRIER_LOCKED) {
  // handle specific error i.e. tries to download but the device is carrier locked
} else if (operationCode == OPERATION_SMDX) {
  // handle all SM-DP+/SM-DS errors
} else if (errorCode == ERROR_TIME_OUT) {
  // handle all types of time out issues, regardless of operation.
} else if ("8.1".equals(smdxSubjectCode) && "3.1".equals(smdxReasonCode)) {
  // handle specific subject code and reason code: 8.1 and 4.1 means insufficient memory.
}

ترکیب‌های پشتیبانی‌شده از عملیات و کد خطا

جدول زیر ترکیب پشتیبانی‌شده از عملیات و کدهای خطای برگشتی از دستیار نمایه محلی (LPA) را شرح می‌دهد.

ترکیب‌های کد خطا و عملیات
کد عملیات کد خطا شرح
OPERATION_SYSTEM نامربوط یک خطای داخلی رخ داد. برای مثال، رشته قطع شد یا IOException خطایی رخ داد.
OPERATION_SIM_SLOT نامربوط هنگام انجام عملیات جایگاه سیم‌کارت، خطای داخلی روی داد.
ERROR_TIME_OUT زمان مجاز برای انجام عملیات شکاف سیم‌کارت به‌پایان رسید.
ERROR_EUICC_MISSING «کنترل‌کننده یکپارچه سیم‌کارت» در دستگاه دردسترس یا فعال نیست.
OPERATION_EUICC_CARD نامربوط هنگام انجام عملیات eUICC، خطای داخلی روی داد.
ERROR_UNSUPPORTED_VERSION نسخه eUICC (تراشه) و نسخه EuiccCard (نرم‌افزار) سازگار نیستند.
ERROR_EUICC_MISSING سیم‌کارتی در دستگاه دردسترس نیست. برای مثال، LPA نمی‌تواند سیم‌کارت را شناسایی کند.
OPERATION_SMDX نامربوط هنگام انجام عملیات SM-DP+/SM-DS، خطای داخلی روی داد.
ERROR_ADDRESS_MISSING نشانی SM-DP+‎ برای بارگیری نمایه وجود ندارد.
ERROR_INVALID_CONFIRMATION_CODE هنگام تجزیه کد فعال‌سازی خطایی رخ داد (قالب نامعتبر).
ERROR_CERTIFICATE_ERROR خطای Keystore یا گواهی هنگام استفاده در اتصال TLS برای درستی‌سنجی.
ERROR_NO_PROFILES_AVAILABLE نمایه‌ای از SM-DP+‎ دردسترس نیست.
ERROR_CONNECTION_ERROR اتصال به سرور برقرار نمی‌شود.
ERROR_INVALID_RESPONSE پاسخ نامعتبر از سرور SM-DP+/SM-DS.
OPERATION_SWITCH نامربوط هنگام انجام عملیات تعویض، خطای داخلی روی داد.
ERROR_CARRIER_LOCKED تعویض نمایه مجاز نیست زیرا دستگاه توسط شرکت مخابراتی قفل شده است (سیم‌کارت قفل است).
OPERATION_DOWNLOAD نامربوط هنگام انجام عملیات بارگیری، خطای داخلی روی داد.
ERROR_DISALLOWED_BY_PPR «جدول مجوز قوانین» در eUICC تهی است یا بارگیری توسط قانون خط‌مشی نمایه مجاز نیست.
ERROR_INVALID_ACTIVATION_CODE هنگام تجزیه کد فعال‌سازی خطایی رخ داد (قالب نامعتبر) یا تلاش برای بارگیری بدون کد فعال‌سازی.
ERROR_CARRIER_LOCKED بارگیری مجاز نیست زیرا دستگاه قفل شرکت مخابراتی (سیم‌کارت قفل) است.
ERROR_INCOMPATIBLE_CARRIER شرکت مخابراتی در فهرست سیاه است و LPA نمی‌تواند نمایه‌ای را از SM-DP+/SM-DS بارگیری کند.
ERROR_OPERATION_BUSY بارگیری نمایه درحال انجام است و هیچ کنش دیگری که بتواند تغییرات وضعیت سیم‌کارت را راه‌اندازی کند مجاز نیست.
OPERATION_METADATA نامربوط هنگام انجام عملیات فراداده، خطای داخلی روی داد.
ERROR_INVALID_ACTIVATION_CODE فراداده اشتراک خالی است یا کد فعال‌سازی درون فراداده اشتراک خالی یا نامعتبر است.
ERROR_INCOMPATIBLE_CARRIER شرکت مخابراتی در فهرست سیاه است و LPA نمی‌تواند نمایه این شرکت مخابراتی را از SM-DP+/SM-DS بارگیری کند.
OPERATION_EUICC_GSMA نامربوط هنگام انجام عملیات eUICC GSMA، خطای داخلی روی داد.
ERROR_INSTALL_PROFILE هنگام نصب نمایه، خطایی در eUICC رخ داد. برای مثال، نمایه ازقبل وجود دارد یا ICCID مطابقت ندارد.
ERROR_EUICC_INSUFFICIENT_MEMORY هنگام نصب نمایه، خطایی در eUICC رخ داد. حافظه کافی در eUICC وجود ندارد.
ERROR_DISALLOWED_BY_PPR هنگام نصب نمایه، خطایی در eUICC روی داد. قانون خط‌مشی نمایه اجازه نمی‌دهد.
OPERATION_APDU نامربوط هنگام انجام عملیات APDU، خطای داخلی روی داد.
OPERATION_HTTP 1-999 کد خطا مقدار خطای HTTP است.
کد عملیات کد موضوع کد دلیل شرح
OPERATION_SMDX_SUBJECT_REASON_CODE رشته حاوی ۳ رقم است که با نقطه از هم جدا شده‌اند و صفر ابتدایی ندارد. برای مثال، 8.1.1. رشته حاوی ۳ رقم است که با نقطه از هم جدا شده‌اند و صفر ابتدایی ندارد. برای مثال، 3.8. SubjectCode[5.2.6.1] و ReasonCode[5.2.6.2] از GSMA (SGP.22 v2.2). برای مثال، ‫SubjectCode 8.1.1 و ReasonCode 3.8 یعنی EID به دستگاه دیگری پیوند داده شده است.