Налаштування Managed App Configuration для iOS-застосунку

Коли корпоративний застосунок потребує індивідуальних налаштувань для кожного клієнта, випуск окремих збірок уповільнює розвиток і створює ризики безпеки. Ми налаштовуємо Managed App Configuration для iOS, щоб параметри доставлялися віддалено через MDM-рішення. Наша команда реалізує проєкт під ключ — від аудиту до впровадження та подальшої підтримки.

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Налаштування Managed App Configuration для iOS-застосунку
Середній
від 1 дня до 3 днів
Часті запитання

Налаштування Managed App Configuration для iOS-застосунку

Ми часто стикаємося з ситуацією: корпоративний застосунок уже працює, але кожен новий клієнт вимагає своїх параметрів — адресу сервера, ідентифікатор орендаря, тайм-аути сесії. Без Managed App Configuration доводиться випускати нову збірку для кожного замовника або вшивати токени прямо в код, що небезпечно. Managed App Configuration дозволяє скоротити час інтеграції нового клієнта з 2 днів до 2 годин — у 10 разів швидше, ніж випуск окремої збірки. За даними Apple, понад 70% корпоративних застосунків використовують цей механізм.

Як Managed App Configuration взаємодіє з MDM?

MDM-сервер (Jamf, Intune, Workspace ONE) надсилає застосунку plist-словник через системний ключ com.apple.configuration.managed. Ваш застосунок читає його з UserDefaults. Дані приходять автоматично після встановлення профілю на пристрій. Жодних додаткових дозволів не потрібно — працює навіть у режимі кіоску.

func loadManagedConfiguration() {
    guard let config = UserDefaults.standard.dictionary(forKey: "com.apple.configuration.managed") else {
        // Устройство неуправляемое или конфиг ещё не доставлен
        applyDefaultConfiguration()
        return
    }
    let backendURL = config["BackendURL"] as? String ?? AppDefaults.backendURL
    let tenantID = config["TenantID"] as? String
    let sessionTimeout = config["SessionTimeoutMinutes"] as? Int ?? 30
    let enableDebugLogs = config["EnableDebugLogs"] as? Bool ?? false
    AppConfig.shared.apply(
        backendURL: backendURL,
        tenantID: tenantID,
        sessionTimeout: sessionTimeout,
        debugLogs: enableDebugLogs
    )
}

Одна пастка: конфігурація може прийти не одразу при першому запуску, а через кілька секунд після MDM-checkin. Застосунок не повинен блокуватися в очікуванні конфігу — застосовуємо дефолти, потім оновлюємо.

Чому важливо реагувати на зміни конфігурації?

MDM може оновити конфіг у будь-який момент — наприклад, змінити URL бекенду при міграції інфраструктури. Потрібно реагувати без перезапуску застосунку. Підписуємося на UserDefaults.didChangeNotification і фільтруємо тільки ключ com.apple.configuration.managed:

override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(
        self,
        selector: #selector(managedConfigChanged),
        name: UserDefaults.didChangeNotification,
        object: nil
    )
}

@objc private func managedConfigChanged() {
    guard let newConfig = UserDefaults.standard.dictionary(forKey: "com.apple.configuration.managed") else {
        return
    }
    let newBackendURL = newConfig["BackendURL"] as? String
    if newBackendURL != AppConfig.shared.backendURL {
        NetworkManager.shared.reconfigure(baseURL: newBackendURL)
    }
}

Фільтрація ключа обов'язкова — інакше кожна незначна зміна UserDefaults буде перезавантажувати конфігурацію. Apple Developer Documentation

Порівняння MDM-консолей для налаштування Managed App Configuration

MDM-рішення Інтерфейс введення Підтримка типів Додатково
Jamf Pro XML-профіль (plist) в застосунку String, Integer, Boolean, Array Можна імпортувати JSON-схему
Microsoft Intune Ключ-значення або XML Усі базові типи Політики конфігурації застосунків для Managed Devices
VMware Workspace ONE Plist-файл у консолі String, Integer, Boolean Гнучкі шаблони
MobileIron XML-словник Обмежений набір Підтримка feedback-ключа

Усі чотири передають дані в одному форматі — com.apple.configuration.managed. Вибір консолі залежить від екосистеми, але наш досвід показує: Jamf зручний для розширених сценаріїв, Intune — для гібридних середовищ.

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

Метод Час реакції на зміну Складність реалізації
Polling кожні N секунд ~N секунд Низька
Notification-based (didChangeNotification) Миттєво Середня
KVO на managed config key Миттєво Висока (вимагає NSObject)

Notification-based підхід дає миттєву реакцію без зайвих циклів опитування — оптимальний вибір для більшості проєктів.

Структура конфігураційного словника

Рекомендований підхід — типізована структура замість ручного приведення з [AnyHashable: Any]. Помилки конфігурації виявляються на етапі парсингу:

struct ManagedConfig: Decodable {
    let backendURL: String
    let tenantID: String?
    let sessionTimeoutMinutes: Int
    let allowBiometricAuth: Bool
    let supportedLanguages: [String]
    let featureFlags: [String: Bool]?

    enum CodingKeys: String, CodingKey {
        case backendURL = "BackendURL"
        case tenantID = "TenantID"
        case sessionTimeoutMinutes = "SessionTimeoutMinutes"
        case allowBiometricAuth = "AllowBiometricAuth"
        case supportedLanguages = "SupportedLanguages"
        case featureFlags = "FeatureFlags"
    }
}

func decodeManagedConfig() -> ManagedConfig? {
    guard let dict = UserDefaults.standard.dictionary(forKey: "com.apple.configuration.managed"),
          let data = try? JSONSerialization.data(withJSONObject: dict),
          let config = try? JSONDecoder().decode(ManagedConfig.self, from: data) else {
        return nil
    }
    return config
}

Документуйте схему для IT-відділу — це прискорює розгортання. Як бонус: MDM може зчитувати стан застосунку через feedback-ключ com.apple.feedback.managed, що спрощує діагностику.

Тестування без MDM-сервера

Для розробки конфігурацію емулюємо через UserDefaults.standard.set() в launch arguments або через окремий debug-екран:

#if DEBUG
func injectTestManagedConfig() {
    let testConfig: [String: Any] = [
        "BackendURL": "https://staging-api.corp.example.com",
        "TenantID": "TEST-001",
        "SessionTimeoutMinutes": 5,
        "AllowBiometricAuth": true
    ]
    UserDefaults.standard.set(testConfig, forKey: "com.apple.configuration.managed")
}
#endif

Також можна використати defaults write в Simulator — це імітує реальну доставку.

Що входить у налаштування Managed App Configuration?

Наші сертифіковані інженери з досвідом понад 5 років виконують:

  • Проєктування словника конфігурації (JSON Schema)
  • Реалізацію читання та обробки змін
  • Інтеграцію з існуючою бізнес-логікою
  • Тестову інтеграцію з вашою MDM (Jamf, Intune, Workspace ONE)
  • Документацію для IT-адміністраторів
  • Навчання команди підтримці

Гарантуємо сумісність з App Store Review Guidelines (Section 4.2).

Типові помилки та як їх уникнути

Найчастіші помилки при впровадженні: блокування UI в очікуванні конфігурації — використовуйте дефолти; відсутність підписки на зміни — обов'язково обробляйте UserDefaults.didChangeNotification; робота з сирим словником замість типізованої структури; та відсутність документації для IT-відділу. Кожна з цих проблем вирішується на етапі проєктування.

Етапи та терміни

  1. Аналітика — 1 день
  2. Проєктування словника — 1 день
  3. Розробка — 3–5 днів
  4. Тестування — 2–3 дні
  5. Інтеграція з MDM — 1 день
  6. Документація та навчання — 1 день

Разом: 1–2 тижні. Вартість розраховується індивідуально, залежить від складності застосунку та кількості параметрів. Оцінимо ваш проєкт — просто напишіть нам. Отримайте консультацію: ми відповідаємо протягом 2 годин у робочі дні. Допоможемо налаштувати Managed App Configuration під ключ, з гарантією якості та підтримкою після впровадження. Зв'яжіться з нами для консультації — ми відповімо протягом 2 годин. Замовте налаштування Managed App Configuration уже сьогодні.

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

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

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1009
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    902
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1106
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714