פיתוח ניהול eSIM לאפליקציות מובייל – פתרון סוהר

הוספת ניהול eSIM לאפליקציה ניידת נראית פשוטה, אך בפועל נתקלת במגבלות iOS ו-Android. אנחנו בונים פתרונות כאלה במתכונת turnkey, מהאודיט ועד הפרסום בחנות. הצוות שלנו מטפל במחזור המלא, ומבטיח אינטגרציה אמינה עם תמיכה מתמשכת.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
פיתוח ניהול eSIM לאפליקציות מובייל – פתרון סוהר
מורכב
מ- 2 שבועות עד 3 חודשים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

פיתוח ניהול eSIM: המלכודות של iOS ואנדרואיד

לקוח מגיע עם משימה טיפוסית: להוסיף ניהול פרופיל eSIM לאפליקציה ניידת. במבט ראשון – רק קוד QR. במציאות – התמודדות עם LPA, מגבלות פלטפורמה ו-SM-DP+. ללא הבנה עמוקה של המנגנונים הללו, הפרויקט נתקע בשלב האינטגרציה: iOS לא מאפשרת ניהול פרוגרמטי, אנדרואיד דורשת הרשאות ספק. אנו לוקחים פרויקטים סוהריים מביקורת ועד פרסום בחנות. במשך למעלה מ-7 שנים צברנו ניסיון על 15+ פרויקטים, כולל אינטגרציות עם ספקים גדולים. טעויות בהתחלה עולות 2–3 שבועות של זמן נוסף – ביקורת פלטפורמה מיידית חוסכת משאבים. הלקוחות שלנו חוסכים עד 40% מתקציב הפיתוח על ידי הזמנת ביקורת בהתחלה.

השוואת יכולות iOS ואנדרואיד לניהול eSIM

יכולת iOS אנדרואיד
ניהול פרופיל רק דרך ממשק המערכת (URL scheme) מלא דרך EuiccManager (בעל הרשאות ספק)
הפעלת QR כן, com.apple.esim כן, מבוסס Intent
גישה ל-LPA לא היסטוריה וסטטוס דרך EuiccManager
הרשאות ספק נדרשות להורדה נדרשות עבור downloadSubscription()

אנדרואיד מספקת פי 5 יותר ממשקי API של eSIM מאשר iOS – EuiccManager מכסה את כל הפעולות: הורדה, מחיקה, החלפה וטיפול בשגיאות. ב-iOS, ספקים יכולים לקבל גישה רק דרך הסכם מיוחד עם אפל (MNO Program).

אילו מגבלות מטילות iOS ואנדרואיד?

iOS מגבילה מאוד את הגישה ל-eUICC. ה-API הציבורי – רק CTCarrier לקריאת המפעיל הפעיל ו-URL scheme com.apple.esim להפעלת QR. אפליקציות ספק יכולות לקבל הרשאות מורחבות, אך רק דרך MNO Program. עבור אפליקציה רגילה, הורדת פרופיל פרוגרמטית אינה זמינה – זו החלטה ארכיטקטונית בסיסית של אפל.

אנדרואיד הרבה יותר פתוחה. החל מאנדרואיד 9 (API 28), EuiccManager זמין, אך downloadSubscription() דורש הרשאת מערכת WRITE_EMBEDDED_SUBSCRIPTIONS. היא ניתנת רק לאפליקציות החתומות עם תעודת הספק (בעל הרשאות ספק) או דרך Device Policy Controller. עם זאת, להפעלה דרך QR או קוד הפעלה, Intent ללא הרשאות מספיק. ב-80% מהמקרים, שגיאות הפעלה קשורות ל-EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR – טיפול נכון מקצר את זמן הניפוי ב-40%.

השוואת שיטות הפעלה

שיטה iOS אנדרואיד
קוד QR URL scheme com.apple.esim Intent START_EUICC_ACTIVATION
קוד הפעלה רק דרך ממשק המערכת Intent + downloadSubscription() (ספק)
הורדה פרוגרמטית דורש MNO Program דורש הרשאות ספק

איך לעקוף את המגבלות של iOS ואנדרואיד?

אנו משתמשים בשילוב של API מבוסס Intent לתרחישי משתמש ובמידת הצורך, אינטגרציה עם תעודות ספק. להלן קטע קוד אנדרואיד טיפוסי המטפל בכל התוצאות האפשריות:

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", "LPA:1$smdp.example.com$ACTIVATION_CODE")
startActivityForResult(switchIntent, REQUEST_CODE_ESIM_DOWNLOAD)

עבור אפליקציות ספק, אנו משתמשים ב-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", "LPA:1$smdp.example.com$ACTIVATION_CODE") startActivityForResult(switchIntent, REQUEST_CODE_ESIM_DOWNLOAD) :

// Только для carrier-privileged приложений
val result = euiccManager.downloadSubscription(
    DownloadableSubscription.forActivationCode("LPA:1$smdp.example.com$CODE"),
    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)
        }
    }
}

downloadSubscription() הוא הקוד החשוב ביותר. זה אומר שהפלטפורמה יודעת כיצד לפתור את הבעיה (אישור משתמש, אימות) אך זקוקה לממשק המערכת. אל תנסו לעקוף – קראו ל-// Только для carrier-privileged приложений val result = euiccManager.downloadSubscription( DownloadableSubscription.forActivationCode("LPA:1$smdp.example.com$CODE"), 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) } } } . בפרויקט אחד על 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.
  • startResolutionActivity עם קוד 5 – הפרופיל כבר מותקן.
  • ב-iOS: בעת פתיחת URL scheme ללא פרופיל eSIM מותקן, המערכת מציגה שגיאה עם קוד 2.
  • בדקו תמיכה: if let url = URL(string: "com.apple.esim://install?carrier=example&activationcode=...") { UIApplication.shared.open(url) } חייב להיות true.

צד השרת של SM-DP+

האפליקציה הניידת היא לקוח דק. ההיגיון המרכזי נמצא על שרת SM-DP+ של המפעיל. הוא מאחסן פרופילים, מייצר קודי הפעלה, מנהל מחזור חיים. השרשרת:

אפליקציה → Backend API → שרת SM-DP+ → eUICC (דרך LPA במכשיר)

פורמט קוד ההפעלה (SGP.22): EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR

ה-backend מייצר Matching ID ייחודי לכל הפעלה – אסימון חד-פעמי המקושר ל-ICCID ספציפי. זה מבטיח שקוד לא יכול לשמש פעמיים.

למה בחירת הפלטפורמה קריטית לפרויקטי eSIM?

אם קהל היעד שלכם הוא iOS, תצטרכו לקבל את היעדר ניהול הפרופיל הפרוגרמטי. כל מה שאפשר לעשות הוא לפתוח את ממשק ההפעלה של המערכת. באנדרואיד, שליטה מלאה זמינה, אך במחיר הרשאות ספק. דילוג על ביקורת פלטפורמה מסכן עיצוב מחדש של הארכיטקטורה – ראינו פרויקטים שנסוגו חודשיים בגלל מגבלות בלתי צפויות. קבלו ייעוץ לפרויקט שלכם – נעריך סיכונים טכניים ביום אחד.

מה כלול בעבודה

  1. ביקורת מגבלות הפלטפורמה של האפליקציה ומכשירי היעד שלכם.
  2. עיצוב ארכיטקטורה: LPA ↔ SM-DP+ ↔ Backend.
  3. קידוד עם טיפול בכל שגיאות ההפעלה.
  4. אינטגרציה עם backend ושרת SM-DP+.
  5. בדיקות על מכשירים אמיתיים (iOS ואנדרואיד) – 90% הפעלות מוצלחות בניסיון הראשון.
  6. הכנה לפרסום ב-App Store וב-Google Play (קבלת הרשאות במידת הצורך).
  7. תמיכה לאחר השחרור ואחריות תאימות.

לוחות זמנים ואחריות

  • אפליקציה בסיסית (הצגת סטטוס, הפעלת QR/Intent): בין 2 ל-4 שבועות.
  • אפליקציה מלאה עם הרשאות ספק ואינטגרציית SM-DP+: בין חודש ל-3 חודשים.

אנו מבטיחים תאימות לגרסאות iOS ואנדרואיד הנוכחיות, ולדרישות GSMA SGP.22. צרו קשר כדי להעריך את הפרויקט שלכם – קבלו ייעוץ על המגבלות הטכניות של הפלטפורמה שלכם. הזמינו ביקורת אינטגרציית eSIM כדי להימנע מטעויות נפוצות.