رابطهای برنامهنویسی کاربردی eUICC کدهای خطایی را ارائه میدهند تا به برنامهها و کاربران در عیبیابی مشکلات مربوط به دانلود، فعالسازی، غیرفعالسازی و حذف پروفایلهای eSIM کمک کنند.
مدیریت خطاها
وقتی هنگام فراخوانی eUICC API خطایی رخ میدهد، یک فراخوانی معکوس برای intent در حال انتظار ارائه میشود و EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE به عنوان کلید دریافت کد خطای دقیق استفاده میشود. از اندروید ۱۱ به بعد، چهار کلید و مقدار زیر در intent حاصل گنجانده شدهاند:
-
EXTRA_EMBEDDED_SUBSCRIPTION_OPERATION_CODE: اطلاعاتی در مورد مشکل پیش آمده ارائه میدهد. برای مثال، دانلود یا حذف یک پروفایل eSIM. این فیلد هرگز خالی نیست. EXTRA_EMBEDDED_SUBSCRIPTION_ERROR_CODE: اطلاعاتی در مورد دلیل وقوع خطا. به عنوان مثال، زمان درخواست به پایان رسیده یا دستگاه قفل شده است. این فیلد در موارد زیر پر نمیشود:- کد عملیات
OPERATION_SMDX_SUBJECT_REASON_CODEاست. - این خطا یک خطای سطح پایین مانند
IOExceptionیاInterruptedExceptionاست.
- کد عملیات
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 به دستگاه دیگری متصل است. |