Ви запускаєте 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-середовищах. Щоб отримати консультацію, просто напишіть нам.







