אתה משיק אפליקציה ארגונית בבנק שבו MobileIron הוא תקן ה-MDM. תוך שבוע מההשקה, מגיעות תלונות: האפליקציה לא נפתחת ללא MobileIron Go, מדיניות DLP חוסמת העתק-הדבק, ו-AppConnect Keychain לא מסתנכרן. בפועל, אתחול AppConnect שגוי או פרופיל provisioning לא מוגדר כהלכה נועלים את האפליקציה עבור 30% מהמשתמשים. אנחנו מהנדסים מוסמכי Ivanti עם 7 שנות ניסיון. אנחנו פותרים בעיות אלה מדי יום. נטפל באינטגרציה turnkey, תוך הבטחת פעולה יציבה גם תחת מדיניות אבטחה לא סטנדרטית. איתנו, תקצרו את זמן האינטגרציה ב-40% ותימנעו מטעויות אופייניות.
איך לבחור בין AppConnect SDK לבין Managed App Configuration
| קריטריון | AppConnect SDK | Managed App Configuration |
|---|---|---|
| תלות בספק | מלאה (קשור ל-MobileIron) | אין (עובד עם כל MDM) |
| אבטחה | מכולה מבודדת, Keychain משלו, VPN לכל אפליקציה | הגבלות מערכת דרך Managed Open In והגדרות DLP |
| מורכבות אינטגרציה | גבוהה: דורש שינויים ב-AppDelegate וירושת Activity | בינונית: רק קובץ הגדרות plist/XML |
| זמן אינטגרציה | 4–7 שבועות | 2–3 שבועות |
| תמיכה בקוד legacy | דורש תת-מחלקות AppConnectActivity | ללא שינויים מבניים |
מקור: תיעוד Ivanti על יכולות AppConnect
Managed App Configuration הוא התקן של Apple/Google, נתמך על ידי כל שרתי ה-MDM. עבור פרויקטים חדשים, זו הדרך המועדפת: פחות נעילה לספק, תחזוקה קלה יותר. AppConnect SDK מוצדק כשצריך תכונות ספציפיות: AppConnect Tunnel (VPN לכל אפליקציה) או AppConnect Keychain עם הצפנה ברמת חומרה המנוהלת על ידי השרת. לקוחות שבוחרים ב-Managed App Configuration חוסכים עד 40% מזמן התמיכה בהשוואה ל-AppConnect SDK.
| פלטפורמה | SDK | אתחול | הגבלות |
|---|---|---|---|
| iOS | AppConnectLib (CocoaPods) | ACManager.shared().startUp() | דורש AppDelegate ו-ACManagerDelegate |
| Android | AppConnect SDK (Gradle) | ירושת AppConnectApplication | כל ה-Activities חייבים לרשת מ-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. במחיקה מרחוק דרך MobileIron, Keychain זה נמחק באופן עצמאי מהמערכת—המפתחות האישיים של המשתמש נשארים ללא פגע.
let acKeychain = ACKeychain()
acKeychain.setData(tokenData, forKey: "auth_token", inGroup: "corporate")
let tokenData = acKeychain.data(forKey: "auth_token", inGroup: "corporate")ההבדל מ-Keychain הסטנדרטי של iOS: AppConnect Keychain אינו נגיש ללא רישום MDM פעיל. זה קריטי למדיניות DLP—כאשר הרישום מבוטל, נתוני החברה הופכים אוטומטית לבלתי זמינים.
Android: MobileIron AppConnect
באנדרואיד, AppConnect מיושם על ידי ירושה מ-pod 'AppConnectLib' :
class MyApplication : AppConnectApplication() {
override fun onCreate() {
super.onCreate()
// AppConnect перехватывает ContentProvider, ClipboardManager, FileProvider
}
}חשוב: 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) } } דורש שכל המחלקות let acKeychain = ACKeychain() acKeychain.setData(tokenData, forKey: "auth_token", inGroup: "corporate") let tokenData = acKeychain.data(forKey: "auth_token", inGroup: "corporate") יירשו מ-AppConnectApplication או class MyApplication : AppConnectApplication() { override fun onCreate() { super.onCreate() // AppConnect перехватывает ContentProvider, ClipboardManager, FileProvider } } . זו מגבלה משמעותית עבור אפליקציות legacy המשתמשות ב-Fragment + ViewPager. פתרון חלקי הוא שימוש ב-AppConnectApplication כמחלקת בסיס ביניים.
איך להפוך את הפריסה לאוטומטית דרך Ivanti Neurons REST API?
לאחר המיתוג מחדש של MobileIron ל-Ivanti, נוצר MDM מבוסס ענן עם REST API. זה מאפשר אוטומציה של ניהול אפליקציות מ-CI/CD ללא פעולות ידניות בקונסולה.
דוגמה לדחיפת 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 הוא 15 דקות. לסנכרון כפוי, קרא ל-Activity. זה עובד ב-80% מהמקרים. בייצור, אנו מוסיפים checkIn בכל AppConnectActivity. זה מקטין את העיכוב ל-2 שניות—פי 5 מהר יותר ממרווח ברירת המחדל.
מה אם AppConnect לא מאתחל?
ב-90% מהמקרים: MobileIron Go לא מותקן או לא מחובר. AppConnect SDK דורש את MobileIron Go כ"שומר המכולה." בתהליכי רישום בייצור, יש לפרוס את MobileIron Go תחילה דרך MDM. הסיבה השנייה היא פרופיל provisioning שגוי או App ID חסר בקונסולת MobileIron.
טעויות אופייניות באינטגרציה של AppConnect SDK
- MobileIron Go לא מותקן לפני השקת האפליקציה (70% מהשגיאות).
- פרופיל provisioning שגוי או App ID חסר בקונסולת MobileIron.
- Activities שלא יורשים מ-AppConnectActivity באנדרואיד.
- מרווח ברירת מחדל של 15 דקות; נדרשת בדיקת כניסה כפויה.
שלבי אינטגרציה
- ניתוח תשתית MobileIron/Ivanti (גרסת שרת, תצורות מדיניות)
- בחירת נתיב: AppConnect SDK או Managed App Configuration
- אינטגרציה של SDK (הגדרת Podfile/Gradle, אתחול, קריאות חוזרות)
- יישום טיפול בתצורה ובמדיניות DLP
- אינטגרציה של AppConnect Keychain לאחסון סודות
- בדיקת תרחישי רישום, מחיקה מרחוק וביטול MDM
- פריסה דרך MobileIron App Catalog או Ivanti App Store
מה כלול בעבודה שלנו
- ביקורת על תשתית ה-MDM הנוכחית
- בחירת נתיב אינטגרציה אופטימלי
- יישום עם קוד מתועד לתחזוקה קלה
- אינטגרציה של AppConnect Keychain ומדיניות DLP
- תיעוד רישום ופתרון תקלות
- תרחיש בדיקה: רישום, תצורה, מחיקה
- 3 חודשי תמיכה באחריות לאחר הפריסה
לוחות זמנים: Managed App Configuration לוקח 2–3 שבועות; אינטגרציה מלאה של AppConnect SDK לוקחת 4–7 שבועות. המחיר נקבע באופן אישי.
היציבות לאחר האינטגרציה משתפרת ב-25% הודות לעדכוני מדיניות אוטומטיים. אם אתה צריך עזרה באינטגרציה של MobileIron, צור קשר. נערוך ביקורת, נציע את הנתיב האופטימלי, ונבצע את העבודה turnkey. עם ניסיון על למעלה מ-15 פרויקטים של MobileIron/Ivanti, אנו מבטיחים תוצאות גם בסביבות legacy מורכבות. כדי לקבל ייעוץ, פשוט כתוב לנו.







