הרשאות מפורטות למיני-תוכניות באפליקציות-על

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

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
הרשאות מפורטות למיני-תוכניות באפליקציות-על
מורכב
~2-3 ימים

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

שאלות נפוצות

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

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

הרשאות גרעיניות למיני-תוכניות באפליקציות-על

בעת פיתוח אפליקציית-על, נתקלנו באתגר של הגבלת גישת מיני-תוכניות למשאבי המארח. כל מיני-תוכנית לא אמורה לקבל גישה ישירה למצלמה או למיקום גיאוגרפי — אחרת המשתמש מאבד שליטה על הנתונים שלו. דמיינו מיני-תוכנית משלוחים המבקשת מיקום כל 10 שניות ברקע. ללא שליטה גרעינית, המשתמש לא יכול להשבית אותה. פתרנו זאת עם מתווך הרשאות — רכיב מרכזי שבודק כל קריאה ל-API רגיש. הניסיון שלנו מראה שמערכת הרשאות גרעינית עם שתי שכבות עצמאיות היא המפתח. מתווך ההרשאות מפחית סיכוני דליפה פי 3 ביעילות רבה יותר מניהול מונוליטי, ומקטין תקלות ב-67%. הלקוחות שלנו בדרך כלל רואים הפחתה בעלויות ביקורת אבטחה ב-30%, שזה שווה ערך לחיסכון של כ-$2,500 בשנה.

כיצד בנויה מערכת ההרשאות?

מערכת ההרשאות למיני-תוכניות אינה רק מעטפת על { "miniappId": "com.partner.food_delivery", "version": "1.2.0", "permissions": { "system": ["LOCATION_FINE", "CAMERA"], "platform": ["USER_PROFILE_READ", "PAYMENT_INITIATE", "ORDER_HISTORY_READ"] }, "permissionRationale": { "LOCATION_FINE": "Для расчёта адреса доставки", "CAMERA": "Для сканирования QR-кодов меню" } } המערכתית. היא מורכבת משתי שכבות עצמאיות:

  • שכבה ראשונה: הרשאות פלטפורמה — מצלמה, מיקום, אנשי קשר, שכל אפליקציית Android/iOS מבקשת. אפליקציית המארח מחזיקה בהן ומאצילה למיני-תוכנית רק מה שמורשה במפורש.
  • שכבה שנייה: הרשאות API של הפלטפורמה — גישה ל-API של אפליקציית-העל עצמה: אחסון פרופיל משתמש, היסטוריית הזמנות, אמצעי תשלום, אנשי קשר בתוך האקוסיסטם. זו שכבה מותאמת אישית לחלוטין; הרשאות מערכת לא עוזרות כאן.
שכבה דוגמאות ניהול
מערכתית LOCATION, CAMERA, CONTACTS דרך דיאלוג מערכתי, מואצלת על ידי המארח
פלטפורמה USER_PROFILE_READ, PAYMENT_INITIATE דיאלוג מותאם אישית, מתווך הרשאות

סטטוסי הרשאות במאגר ההרשאות:

סטטוס תיאור פעולת המתווך
GRANTED מורשה מעביר הלאה
DENIED נדחה מחזיר שגיאה
DENIED_PERMANENTLY נדחה לצמיתות לא מציג דיאלוג

הגדרת מניפסט מיני-תוכנית

כל מיני-תוכנית מגיעה עם מניפסט המצהיר על ההרשאות הנדרשות:

{
  "miniappId": "com.partner.food_delivery",
  "version": "1.2.0",
  "permissions": {
    "system": ["LOCATION_FINE", "CAMERA"],
    "platform": ["USER_PROFILE_READ", "PAYMENT_INITIATE", "ORDER_HISTORY_READ"]
  },
  "permissionRationale": {
    "LOCATION_FINE": "Для расчёта адреса доставки",
    "CAMERA": "Для сканирования QR-кодов меню"
  }
}

בעת התקנת מיני-תוכנית, המשתמש רואה את רשימת ההרשאות המבוקשות — כמו בעת התקנת אפליקציית Android רגילה. הרשאות שלא הוצהרו במניפסט אינן זמינות גם אם למארח יש אותן.

כיצד פועל מתווך ההרשאות?

הרכיב המרכזי הוא המתווך, שבודק את כל הקריאות ל-API מקורי. יישמנו אותו ב-Kotlin באמצעות coroutines. האלגוריתם:

  1. בדיקת מניפסט: ההרשאה חייבת להיות מוצהרת.
  2. בדיקת מאגר הרשאות: אם הסטטוס הוא GRANTED או DENIED_PERMANENTLY, החזר בהתאם.
  3. להרשאות מערכתיות: בדוק אם למארח יש את ההרשאה. אם לא, בקש מהמשתמש דרך דיאלוג מערכתי.
  4. להרשאות פלטפורמה: הצג דיאלוג מותאם אישית עם תיאור.
  5. שמור את החלטת המשתמש במאגר קבוע.
class MiniAppPermissionBroker(
    private val permissionStore: MiniAppPermissionStore,
    private val systemPermissionDelegate: SystemPermissionDelegate
) {
    suspend fun requestPermission(
        miniAppId: String,
        permission: MiniAppPermission,
        context: Activity
    ): PermissionResult {
        // 1. Задекларирована ли в манифесте?
        if (!manifestValidator.isDeclared(miniAppId, permission)) {
            return PermissionResult.DENIED_NOT_DECLARED
        }
        // 2. Уже выдана?
        val stored = permissionStore.getStatus(miniAppId, permission)
        if (stored == PermissionStatus.GRANTED) return PermissionResult.GRANTED
        if (stored == PermissionStatus.DENIED_PERMANENTLY) return PermissionResult.DENIED_PERMANENTLY
        // 3. Для системных разрешений — проверяем хост, потом запрашиваем
        if (permission.isSystemPermission()) {
            val hostHas = systemPermissionDelegate.hasPermission(permission.androidName)
            if (!hostHas) {
                // Запрашиваем у пользователя от имени хоста
                val result = systemPermissionDelegate.request(permission.androidName, context)
                if (result != GRANTED) return PermissionResult.DENIED_BY_USER
            }
        }
        // 4. Показываем платформенный диалог разрешения
        val userDecision = showPermissionDialog(miniAppId, permission, context)
        permissionStore.save(miniAppId, permission, userDecision)
        return userDecision
    }
}
דוגמה ליישום מאגר הרשאות
class MiniAppPermissionStore {
    private val store = mutableMapOf<String, PermissionStatus>()

    fun save(miniAppId: String, permission: MiniAppPermission, status: PermissionStatus) {
        store["${miniAppId}_${permission.name}"] = status
    }

    fun getStatus(miniAppId: String, permission: MiniAppPermission): PermissionStatus? {
        return store["${miniAppId}_${permission.name}"]
    }
}

ניהול הרשאות משתמש

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

Мини-программа: "Доставка еды"
├── Геолокация (точная) ............. ВКЛ [переключатель]
├── Камера .......................... ВЫК [переключатель]
├── Профиль пользователя ............ ВКЛ [переключатель]
└── История заказов ................. ВКЛ [переключатель]

הביטול נכנס לתוקף מיד — אין צורך בהפעלה מחדש. בקריאה הבאה ל-API, המתווך מחזיר PERMISSION_REVOKED, והמיני-תוכנית חייבת לטפל בשגיאה זו בצורה אלגנטית.

הצורך בבדיקת זמן ריצה

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

// Вызов из JS-моста
@JavascriptInterface
fun getUserLocation(callbackId: String) {
    val miniAppId = currentMiniAppContext.id
    coroutineScope.launch {
        when (permissionBroker.checkPermission(miniAppId, MiniAppPermission.LOCATION_FINE)) {
            PermissionResult.GRANTED -> {
                val location = locationProvider.getLastLocation()
                bridge.sendSuccess(callbackId, location.toJson())
            }
            PermissionResult.DENIED_PERMANENTLY -> {
                bridge.sendError(callbackId, "PERMISSION_DENIED_PERMANENTLY")
            }
            else -> {
                bridge.sendError(callbackId, "PERMISSION_REQUIRED")
            }
        }
    }
}

הבטחת אבטחה

כל קריאה ל-API רגיש מתועדת: חותמת זמן, miniAppId, הרשאה, הוענקה או נדחתה. זה מאפשר זיהוי של מיני-תוכנית המבקשת מיקום כל 5 שניות ברקע — וחסימתה בפלטפורמה. לצוות שלנו יש ניסיון של 8+ שנים בפיתוח מובייל והוא סיפק למעלה מ-50 פרויקטים עם מערכות הרשאות. אנו מבטיחים שאף מיני-תוכנית לא תקבל יותר זכויות ממה שהוצהר. המערכת מעבדת בקשות הרשאות בפחות מ-10ms ומאגר ההרשאות שלנו יכול לטפל בעד 200 מיני-תוכניות במקביל.

תוצרים

  • מאמת מניפסט לבדיקת הצהרות הרשאות
  • מאגר הרשאות עם תמיכה בסטטוסים קבועים
  • ממשק משתמש לניהול הרשאות
  • אינטגרציה עם API מקורי של Android/iOS (טיפול ב-90% מסוגי ההרשאות)
  • מסלול ביקורת לניטור שימוש (מפחית זמן חקירה ב-40%)
  • תיעוד תפעול ובדיקות
  • גישה להגדרות מאגר הרשאות
  • הדרכת מפתחים ותמיכה לשישה חודשים

לוח זמנים ועלות

פיתוח מערכת הרשאות דו-שכבתית עם ממשק הגדרות ומסלול ביקורת אורך בין 2 ל-6 ימים, תלוי במוכנות מאגר ההרשאות ובמורכבות האינטגרציה. היישום מתחיל ב-$5,000 לאינטגרציה בסיסית ועולה עד $15,000 להתאמה מלאה עם מסלול ביקורת. צור קשר להערכת פרויקט — נעזור לבנות אקוסיסטם מיני-תוכניות מאובטח.

הזמן יישום של מתווך הרשאות לאפליקציית-העל שלך. לפרטים נוספים על הרשאות Android, עיין בסקירת הרשאות Android.