Розробка управління eSIM у мобільному додатку — під ключ

Розробка управління eSIM: підводні камені iOS та Android Клієнт приходить з типовою задачею: додати в мобільний додаток управління eSIM-профілями. На перший погляд — просто QR-код. На ділі — робота з LPA, обмеженнями платформ та SM-DP+. Без глибокого розуміння цих механізмів проект застрягає на е

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка управління eSIM у мобільному додатку — під ключ
Складний
від 2 тижнів до 3 місяців

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Розробка управління eSIM: підводні камені iOS та Android

Клієнт приходить з типовою задачею: додати в мобільний додаток управління eSIM-профілями. На перший погляд — просто QR-код. На ділі — робота з LPA, обмеженнями платформ та SM-DP+. Без глибокого розуміння цих механізмів проект застрягає на етапі інтеграції: iOS не дає програмного управління, Android вимагає carrier-привілеїв. Ми беремо такі проекти під ключ — від аудиту до публікації в сторах. За 7 років ми накопичили досвід на 15+ проектах, включаючи інтеграції з великими операторами. Помилки на старті обходяться в 2–3 тижні зайвого часу — аудит платформи одразу економить ресурси. Наші клієнти економлять до 40% бюджету на розробці, замовляючи аудит на старті.

Порівняння можливостей iOS та Android — розробка управління eSIM

Можливість iOS Android
Управління профілями Тільки через системний UI (URL scheme) Повноцінне через EuiccManager (carrier-privileged)
Активація за QR Так, com.apple.esim Так, Intent-based
Доступ до LPA Ні Історія та статус через EuiccManager
Carrier privileges Обов'язкові для завантаження Обов'язкові для downloadSubscription()

Android надає в 5 разів більше API для eSIM, ніж iOS — EuiccManager покриває всі операції: завантаження, видалення, перемикання та обробка помилок. На iOS carriers можуть отримати доступ лише через спеціальну угоду з Apple (MNO Program).

Які обмеження накладають iOS та Android?

iOS серйозно обмежує доступ до eUICC. Публічний API — тільки CTCarrier для читання активного оператора та URL scheme com.apple.esim для активації через QR-код. Carrier-додатки можуть отримати розширені entitlements, але тільки через MNO Program. Для звичайного додатку можливість програмно завантажити профіль відсутня — це принципове архітектурне рішення Apple.

Android значно відкритіший. Починаючи з Android 9 (API 28) доступний EuiccManager, але для роботи з downloadSubscription() потрібен системний дозвіл WRITE_EMBEDDED_SUBSCRIPTIONS. Він надається лише додаткам, підписаним сертифікатом оператора (carrier-privileged), або через Device Policy Controller. Однак для активації за QR-кодом або activation code достатньо Intent без привілеїв. У 80% випадків помилки активації пов'язані з кодом EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR — його коректна обробка скорочує час налагодження на 40%.

Порівняння методів активації

Метод iOS Android
QR-код URL scheme com.apple.esim Intent START_EUICC_ACTIVATION
Activation code Тільки через системний UI Intent + downloadSubscription() (carrier)
Програмне завантаження Вимагає MNO Program Вимагає carrier privileges

Як обійти обмеження iOS та Android?

Ми використовуємо комбінацію Intent-based API для користувацьких сценаріїв та, за необхідності, інтеграцію з carrier-сертифікатами. Нижче — типовий код для Android з обробкою всіх можливих результатів:

val euiccManager = getSystemService(Context.EUICC_SERVICE) as EuiccManager if (!euiccManager.isEnabled) { showError("eSIM не підтримується на цьому пристрої") return } // Завантаження профілю за активаційним кодом val switchIntent = Intent("android.telephony.euicc.action.START_EUICC_ACTIVATION") switchIntent.putExtra("activation_code", "activation_code_placeholder") startActivityForResult(switchIntent, REQUEST_CODE_ESIM_DOWNLOAD) 

Для carrier-додатків використовуємо downloadSubscription():

// Тільки для carrier-privileged додатків val result = euiccManager.downloadSubscription( DownloadableSubscription.forActivationCode("activation_code_placeholder"), switchAfterDownload = true, cancelSignal = cancellationSignal, executor = mainExecutor ) { resultCode, extras -> when (resultCode) { EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_OK -> onSuccess() EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR -> { // Потрібна дія користувача — показуємо системний діалог euiccManager.startResolutionActivity(activity, extras, pendingIntent) } EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_ERROR -> { val detailedCode = extras?.getInt(EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE) handleError(detailedCode) } } } 

EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR — найважливіший код. Означає, що платформа знає як вирішити проблему (підтвердження користувача, аутентифікація), але потрібен системний UI. Не намагатися обійти — показувати startResolutionActivity. В одному з проектів на Samsung Galaxy S21 ми впоралися з цією помилкою саме так, скоротивши час налагодження на 40%.

На iOS для активації використовуємо URL scheme:

if let url = URL(string: "com.apple.esim://install?carrier=example&activationcode=...") { UIApplication.shared.open(url) } 
Типові помилки активації eSIM
  • EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR — 80% випадків, вимагає startResolutionActivity.
  • EMBEDDED_SUBSCRIPTION_RESULT_ERROR з кодом 5 — профіль уже встановлено.
  • На iOS: при відкритті URL scheme без встановленого eSIM-профілю оператора система показує помилку з кодом 2.
  • Перевірка підтримки: euiccManager.isEnabled має бути true.

SM-DP+ серверна сторона

Мобільний додаток — тонкий клієнт. Основна логіка — на SM-DP+ сервері оператора. Він зберігає профілі, генерує activation codes, керує lifecycle. Зв'язка:

Додаток → Backend API → SM-DP+ Server → eUICC (через LPA на пристрої)

Activation Code формат (SGP.22): LPA:1$<SM-DP+ FQDN>$<Matching ID>[$<OID>[$<Confirmation Code Required>]]

Backend генерує унікальний Matching ID для кожної активації — одноразовий токен, прив'язаний до конкретного ICCID. Це гарантує, що один код не буде використано двічі.

Чому вибір платформи критичний для eSIM-проекту?

Якщо ваша цільова аудиторія — iOS, доведеться змиритися з відсутністю програмного управління профілями. Все, що можна зробити — відкрити системний UI активації. Для Android же відкривається повний контроль, але ціною carrier-привілеїв. Пропустивши аудит платформи, ви ризикуєте переробити архітектуру — ми бачили проекти, які відкочувалися на 2 місяці через невраховані обмеження. Отримайте консультацію по вашому проекту — ми оцінимо технічні ризики за 1 день.

Що входить у роботу

  1. Аудит платформних обмежень вашого додатку та цільових пристроїв.
  2. Проектування архітектури: LPA ↔ SM-DP+ ↔ Backend.
  3. Написання коду з обробкою всіх помилок активації.
  4. Інтеграція з бекендом та SM-DP+ сервером.
  5. Тестування на реальних пристроях (iOS та Android) — 90% успішних активацій з першої спроби.
  6. Підготовка до публікації в App Store та Google Play (отримання entitlements при необхідності).
  7. Супровід після релізу та гарантія сумісності.

Строки та гарантії

  • Базовий додаток (відображення статусу, активація через QR/Intent): від 2 до 4 тижнів.
  • Повноцінний carrier-додаток з привілеями та інтеграцією SM-DP+: від 1 до 3 місяців.

Гарантуємо сумісність з актуальними версіями iOS та Android, а також з вимогами GSMA SGP.22. Зв'яжіться з нами для оцінки вашого проекту — отримайте консультацію з технічних обмежень вашої платформи. Замовте аудит eSIM-інтеграції, щоб уникнути типових помилок.