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

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

مدیریت خطاها

وقتی هنگام فراخوانی eUICC API خطایی رخ می‌دهد، یک فراخوانی معکوس برای intent در حال انتظار ارائه می‌شود و EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE به عنوان کلید دریافت کد خطای دقیق استفاده می‌شود. از اندروید ۱۱ به بعد، چهار کلید و مقدار زیر در intent حاصل گنجانده شده‌اند:

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

  • EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_SUBJECT_CODE : به همراه EXTRA_EMBEDDED_SUBSCRIPTION_SMDX_REASON_CODE استفاده می‌شود که با هم SubjectCode[5.2.6.1] و ReasonCode[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 استفاده می‌شود که با هم SubjectCode[5.2.6.1] و ReasonCode[5.2.6.2] را از GSMA (SGP.22 v2.2) ارائه می‌دهند. این فیلد فقط زمانی پر می‌شود که کد عملیات OPERATION_SMDX_SUBJECT_REASON_CODE باشد.

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

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 قابل اجرا نیست یک خطای داخلی رخ داده است. برای مثال، نخ (thread) قطع شده یا خطای IOException رخ داده است.
OPERATION_SIM_SLOT قابل اجرا نیست هنگام انجام عملیات مربوط به اسلات سیم کارت، خطای داخلی رخ داده است.
ERROR_TIME_OUT هنگام تلاش برای انجام عملیات مربوط به اسلات سیم‌کارت، مهلت زمانی تمام شد.
ERROR_EUICC_MISSING هیچ eUICC در دستگاه موجود یا فعال نیست.
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 خطای ذخیره کلید یا گواهی هنگام استفاده در اتصال 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 نسخه 2.2). برای مثال، SubjectCode با 8.1.1 و ReasonCode با 3.8 به این معنی است که EID به دستگاه دیگری متصل است.