Вы запускаете enterprise-приложение в банке, где MobileIron — стандарт MDM. Уже через неделю после rollout появляются жалобы: приложение не открывается без MobileIron Go, политики DLP блокируют копирование, AppConnect Keychain не синхронизируется. На практике неправильная инициализация AppConnect или неверный provisioning profile блокируют приложение у 30% пользователей. Мы — сертифицированные инженеры Ivanti с 7-летним опытом. Решаем такие проблемы ежедневно. Поможем реализовать интеграцию под ключ, гарантируя стабильную работу даже при нестандартных политиках безопасности. С нами вы сократите время интеграции на 40% и избежите типичных ошибок.
Как выбрать между AppConnect SDK и Managed App Configuration?
| Критерий | AppConnect SDK | Managed App Configuration |
|---|---|---|
| Зависимость от вендора | Полная (привязан к MobileIron) | Отсутствует (работает с любым MDM) |
| Безопасность | Изолированный контейнер, собственный Keychain, per-app VPN | Системные ограничения через Managed Open In и DLP-настройки |
| Сложность интеграции | Высокая: требуется изменение AppDelegate и наследование Activity | Средняя: достаточно конфигурационного plist/XML |
| Время интеграции | 4–7 недель | 2–3 недели |
| Поддержка legacy-кода | Требует наследников AppConnectActivity | Без изменений в структуре проекта |
Источник: документация Ivanti о возможностях AppConnect
Managed App Configuration — стандарт Apple/Google, поддерживается всеми MDM-серверами. Для новых проектов это предпочтительный путь: меньше vendor lock-in, проще поддержка. AppConnect SDK оправдан, когда нужны специфические функции: AppConnect Tunnel (per-app VPN) или AppConnect Keychain с аппаратным шифрованием, управляемым сервером. Заказчики, выбравшие Managed App Configuration, экономят до 40% времени на поддержку по сравнению с AppConnect SDK.
| Платформа | SDK | Инициализация | Ограничения |
|---|---|---|---|
| iOS | AppConnectLib (CocoaPods) | ACManager.shared().startUp() | Требует AppDelegate и ACManagerDelegate |
| Android | AppConnect SDK (Gradle) | Наследование AppConnectApplication | Все Activity — наследники AppConnectActivity |
AppConnect SDK для iOS: код инициализации
Добавление через CocoaPods:
pod 'AppConnectLib'
Инициализация:
import AppConnectLib
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, ACManagerDelegate {
func application(_ app: UIApplication, didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
ACManager.shared().delegate = self
ACManager.shared().startUp(with: self.window)
return true
}
func appConnectConfigReceived(_ config: [AnyHashable: Any]?) {
guard let config = config else { return }
let serverURL = config["server_url"] as? String
let orgID = config["org_id"] as? String
AppSettings.shared.configure(serverURL: serverURL, orgID: orgID)
}
func appConnectPolicyReceived(_ policy: [AnyHashable: Any]?) {
let copyPasteAllowed = policy?["copy_paste_out"] as? Bool ?? false
DLPEnforcer.shared.setCopyPasteEnabled(copyPasteAllowed)
}
}
AppConnect Keychain: изолированное хранение секретов
AppConnect предоставляет собственный Keychain, зашифрованный ключом MobileIron-контейнера. При remote wipe через MobileIron этот Keychain очищается независимо от системного — личные ключи пользователя не затрагиваются.
let acKeychain = ACKeychain()
acKeychain.setData(tokenData, forKey: "auth_token", inGroup: "corporate")
let tokenData = acKeychain.data(forKey: "auth_token", inGroup: "corporate")
Отличие от стандартного iOS Keychain: AppConnect Keychain недоступен без активной MDM-регистрации. Это критично для DLP-политик — при отзыве регистрации корпоративные данные автоматически становятся недоступны.
Android: MobileIron AppConnect
На Android AppConnect реализуется через наследника AppConnectApplication:
class MyApplication : AppConnectApplication() {
override fun onCreate() {
super.onCreate()
// AppConnect перехватывает ContentProvider, ClipboardManager, FileProvider
}
}
Важно: AppConnectApplication требует, чтобы все Activity наследовались от AppConnectActivity или AppConnectFragmentActivity. Это серьёзное ограничение для legacy-приложений на Fragment + ViewPager. Частичный выход — использование AppConnectFragmentActivity как промежуточного базового класса.
Как автоматизировать деплой через Ivanti Neurons REST API?
После ребрендинга MobileIron в Ivanti появился cloud-native MDM с REST API. Это позволяет автоматизировать управление приложением из CI/CD без ручных действий в консоли.
Пример push IPA через GitHub Actions:
curl -X POST "https://tenant.mobileiron.com/api/v1/apps" \
-H "Authorization: Bearer $IVANTI_TOKEN" \
-H "Content-Type: multipart/form-data" \
-F "file=@build/app.ipa" \
-F "metadata={\"bundleId\":\"com.company.app\",\"appStoreId\":\"enterprise\"}"
Сложности и их преодоление
Как ускорить обновление конфигурации?
AppConnect polling interval по умолчанию — 15 минут. Для force-sync вызовите ACManager.shared().checkIn(). В 80% случаев это помогает. В production добавляем checkin при каждом applicationWillEnterForeground. Это снижает задержку до 2 секунд — в 5 раз быстрее стандартного интервала.
Что делать, если AppConnect не инициализируется?
90% случаев — MobileIron Go не установлено или не залогинено. AppConnect SDK требует MobileIron Go как «сторож контейнера». В production enrollment workflow MobileIron Go должен устанавливаться первым через MDM. Вторая причина — неверный provisioning profile или отсутствие App ID в консоли MobileIron.
Типичные ошибки при интеграции AppConnect SDK
- MobileIron Go не установлен перед запуском приложения (70% ошибок).
- Неверный provisioning profile или отсутствие App ID в консоли MobileIron.
- Наследование Activity не от AppConnectActivity на Android.
- Polling interval 15 минут по умолчанию; требуется force-checkin.
Этапы интеграции
- Анализ инфраструктуры MobileIron/Ivanti (версия сервера, конфигурации политик)
- Выбор пути: AppConnect SDK или Managed App Configuration
- Интеграция SDK (настройка Podfile/Gradle, инициализация, callbacks)
- Реализация обработки конфигурации и политик DLP
- Интеграция AppConnect Keychain для хранения секретов
- Тестирование enrollment, remote wipe, сценариев отзыва MDM
- Деплой через MobileIron App Catalog или Ivanti App Store
Что входит в работу
- Аудит текущей MDM-инфраструктуры
- Выбор оптимального пути интеграции
- Реализация кода с комментариями для поддержки
- Интеграция AppConnect Keychain и DLP-политик
- Документация по enrollment и troubleshooting
- Тестовый сценарий: enrollment, конфигурация, wipe
- Гарантийная поддержка 3 месяца после внедрения
Сроки: Managed App Configuration — 2–3 недели, полная интеграция AppConnect SDK — 4–7 недель. Стоимость рассчитывается индивидуально.
Стабильность работы после интеграции повышается на 25% благодаря автоматическому обновлению политик. Если вам нужна помощь с интеграцией MobileIron — свяжитесь с нами. Мы проведём аудит, предложим оптимальный путь и выполним работы под ключ. Опыт более 15 проектов с MobileIron/Ivanti позволяет гарантировать результат даже в сложных legacy-средах. Чтобы получить консультацию, просто напишите нам.







