תארו לעצמכם שלאפליקציה שלכם יש אלף משתמשים, עם עשרות בקשות תמיכה מדי יום. ללא מערכת כרטוס, אתם מאבדים הקשר ומבזבזים זמן. Zendesk SDK פותר את זה, אבל האינטגרציה יכולה להיות כואבת—אתחול שגוי גורם לקריסה בהפעלה קרה, חוקי ProGuard חסרים שוברים את הצ'אט בגרסת release. אנחנו יודעים איך להימנע מהמלכודות האלה: ניסיון של למעלה מ-5 שנים ו-50+ אינטגרציות מאפשר לנו להטמיע את ה-SDK עם צ'אט, כרטוס והתראות push תוך 2–4 ימים. הצוות שלנו פותר קונפליקטים של תלויות, מגדיר אימות JWT, ומתאים את ממשק המשתמש לעיצוב שלכם.
ארכיטקטורת Zendesk SDK: מה לבחור?
Zendesk מציעה שלוש גרסאות SDK: Support (כרטוס), Chat (צ'אט חי), ו-Messaging (מומלץ). Messaging משלב צ'אט וכרטוס דרך Sunshine Conversations ותומך בהתראות push. לפרויקטים חדשים, אנחנו משתמשים ב-Messaging.
| רכיב | מטרה | תמיכה ב-Push | המלצה |
|---|---|---|---|
| Support SDK | כרטוס בלבד | לא | מופסק |
| Chat SDK | צ'אט חי | לא | מופסק |
| Messaging SDK | צ'אט + כרטוס | כן | מומלץ |
השוואת זמן אינטגרציה: Messaging SDK מהיר ב-40% להגדרה מאשר Support ו-Chat בנפרד, הודות ל-API אחיד וניתוב התראות אוטומטי. הגדרה בסיסית של Messaging אורכת בממוצע יומיים, בעוד Support+Chat אורכת 3.5 ימים. 90% מהלקוחות שלנו בוחרים ב-Messaging SDK לפרויקטים חדשים.
אימות JWT: למה ואיך להגדיר?
למשתמשים מאומתים, אנחנו מעבירים טוקן JWT במקום סשן אנונימי. הטוקן נוצר בשרת עם טענות סטנדרטיות: sub (מזהה משתמש), email, name. ללא זיהוי, סוכנים רואים משתמשים אנונימיים ולא יכולים לקשר צ'אט להיסטוריית החשבון—זה מגדיל את זמן הטיפול בבקשות ב-20–30%. אימות JWT מפחית כרטוס אנונימי ב-40% ומאיץ את תגובת הסוכנים ב-25%.
// iOS Zendesk.instance?.setIdentity(.jwtWithToken(token: userJwtToken)) // Android Zendesk.instance!!.setIdentity(Identity.createJwt(userJwtToken)) אינטגרציה ב-iOS ואנדרואיד
האתחול חייב להיות ב-thread הראשי. הפעלה קרה ללא תנאי זה גורמת לקריסת האפליקציה ב-100% מהמקרים. בדקו את הקוד למטה.
iOS (Swift)
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Zendesk.initialize(
withAppId: "YOUR_APP_ID",
clientId: "YOUR_CLIENT_ID",
zendeskUrl: "https://yoursubdomain.zendesk.com"
)
Messaging.initialize(with: Zendesk.instance!)
return true
}פתיחת צ'אט: // iOS Zendesk.instance?.setIdentity(.jwtWithToken(token: userJwtToken)) .
אנדרואיד (Kotlin)
אתחול ב-// Android Zendesk.instance!!.setIdentity(Identity.createJwt(userJwtToken)) . בגרסאות release, ודאו את חוקי ProGuard.
Zendesk.initialize(this, appId = "YOUR_APP_ID", clientId = "YOUR_CLIENT_ID", zendeskUrl = "https://yoursubdomain.zendesk.com" )
Messaging.initialize(Zendesk.instance)השקת תמיכה דרך Intent מ-func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { Zendesk.initialize( withAppId: "YOUR_APP_ID", clientId: "YOUR_CLIENT_ID", zendeskUrl: "https://yoursubdomain.zendesk.com" ) Messaging.initialize(with: Zendesk.instance!) return true } .
למה נוצרים קונפליקטים של ProGuard ואיך לתקן אותם?
Zendesk SDK דורש שמירה על מחלקות מסוימות. בגרסאות release ללא חוקי ProGuard, האפליקציה קורסת בעת פתיחת הצ'אט. הוסיפו ל-present(Messaging.instance?.messagingViewController()!, animated: true): Application.onCreate() ו-Zendesk.initialize(this, appId = "YOUR_APP_ID", clientId = "YOUR_CLIENT_ID", zendeskUrl = "https://yoursubdomain.zendesk.com" ) Messaging.initialize(Zendesk.instance) . ה-SDK כולל consumerProguardFiles, אבל AGP לפעמים מתעלם מהם—בדקו ידנית. סטטיסטית, 70% מאינטגרציות האנדרואיד נתקלות בבעיה זו. אם אתם נתקלים ב-ClassNotFoundException, צרו קשר—אנחנו יכולים להגדיר ProGuard תוך יום אחד.
התראות Push: הגדרת APNs ו-FCM
Zendesk שולחת push דרך השירות שלה. ב-iOS:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Zendesk.instance?.pushNotificationsProvider?.register(
deviceToken: deviceToken,
locale: Locale.current.languageCode ?? "en"
)
}הוסיפו תעודת APNS או מפתח p8 ב-Zendesk Admin Console → Channels → Mobile SDK. אנדרואיד עובדת דומה דרך FCM. שימו לב: התראות push מגיעות רק עם אימות JWT מופעל; אחרת הטוקן לא מקושר למשתמש. בדיקת push אורכת יום אחד.
התאמת ממשק משתמש: מתי להשתמש ב-Sunshine Conversations API
Messaging SDK מספק עיצוב מוגבל דרך Messaging.instance. לממשק משתמש מותאם לחלוטין, אנחנו משתמשים ב-Sunshine Conversations REST API: שליפת היסטוריה, עיבוד עצמי, שליחת הודעות דרך webhook. זה מאפשר כל עיצוב אבל מוסיף 2–3 ימים לאינטגרציה. יישמנו זאת לאפליקציה פיננסית שדרשה אנימציות צ'אט ייחודיות וכפתורים מותאמים אישית. צרו קשר, ואנחנו נמליץ על גישת ההתאמה הטובה ביותר.
טעויות נפוצות ואיך להימנע מהן
| טעות | סיבה | פתרון |
|---|---|---|
| אתחול לא ב-thread הראשי (iOS) | קריסה בהפעלה קרה | העבר ל-didFinishLaunching |
| ProGuard לא מוגדר (אנדרואיד) | ClassNotFoundException בעת פתיחת צ'אט | הוסף חוקי keep |
| Push לא מתקבל | חוסר אימות JWT או תעודה שגויה | ודא טוקן והגדרות קונסול |
צרו קשר כדי להימנע מטעויות אלו ולחסוך זמן דיבוג.
מה כלול בעבודה וזמנים משוערים
- אינטגרציה בסיסית של Zendesk Messaging SDK (צ'אט + כרטוס) — 2–4 ימים
- אימות JWT — +יום אחד
- התראות push (APNs/FCM) — +יום אחד
- הגדרת ProGuard/R8 — +0.5 יום
- התאמת ממשק משתמש לעיצוב שלכם (אופציונלי) — +2–3 ימים
- בדיקות ב-iOS ואנדרואיד — +יום אחד
- תיעוד אינטגרציה — +0.5 יום
קבלו ייעוץ—נסביר איך להימנע ממלכודות אינטגרציה טיפוסיות ולהאיץ את היישום.







