משתמשים מתקשרים ב-iMessage, והשירות שלך עובד ישירות בתוך הצ'אט. אין צורך לצאת מאפליקציית Messages כדי לשלוח מדבקה, להצביע או לבצע מהלך במשחק. הרחבת iMessage היא יעד Extension נפרד בתוך אפליקציית iOS, המוטמע ב-iMessage. מאז תחילת הטכנולוגיה, פיתחנו מעל 20 פרויקטים עבור App Store, תוך הבטחת מעבר בבדיקת App Store והימנעות מדחיות תחת סעיפים 4.2 ו-5.1. בפרויקט אחד של אפליקציה חברתית, בנינו הרחבה אינטראקטיבית לשיתוף סקרים, שהפחיתה את זמן השהיית מסירת ההודעות מ-5 שניות לפחות משנייה אחת על ידי מעבר לנתונים מקודדי URL ויישום NSCache.
Sticker Pack לעומת MSMessagesAppViewController
Sticker Pack — האפשרות הפשוטה ביותר ללא קוד: הוסף יעד Extension מסוג "Sticker Pack Application", העלה PNG/APNG/GIF אל Stickers.xcassets. Apple מייצרת את ממשק המשתמש אוטומטית. גדלים: קטן (100×100 pt), רגיל (136×136 pt), גדול (206×206 pt). APNG — עד 500 KB, GIF — עד 25 MB (לא מומלץ עקב אובדן איכות).
MSMessagesAppExtension — הרחבה מלאה עם UIKit או SwiftUI. נקודת הכניסה היא MSMessagesAppViewController. שני מצבים: Compact (~225 pt) ו-Expanded (כמעט מסך מלא). מעבר באמצעות requestPresentationStyle(.expanded). הודעות מיוצגות על ידי אובייקטי MSMessage עם URL ו-MSMessagesTemplateLayout (תמונה, כיתוב, כיתוב משנה). בעת הקשה, הנמען פותח את ההרחבה אם היא מותקנת.
למה לבחור ב-MSMessagesAppViewController?
MSMessagesAppExtension גמישה פי 10 מ-Sticker Pack: היא מאפשרת כרטיסים אינטראקטיביים, משחקי מרובי משתתפים, סקרים, ושילוב עם רכישות דרך StoreKit 2. Sticker Pack מתאים רק למדבקות סטטיות או מונפשות. אם הפרויקט שלך דורש כל תרחיש אינטראקטיבי—בחר ב-MSMessagesAppViewController.
מגבלות ואילוצים של הרחבת iMessage
האילוץ המרכזי הוא זיכרון RAM: Apple מקצה כ-100 MB. חריגה ממנו גורמת לקריסת EXC_RESOURCE. השתמש ב-NSCache עם countLimit ו-totalCostLimit, הימנע מתמונות כבדות בקאש, טען נתונים באופן אסינכרוני. האילוץ השני הוא גודל ה-URL להעברת נתונים: קודד נתונים לפרמטרי שאילתה או base64, הימנע ממטענים גדולים.
איך להעביר נתונים בין משתתפים?
הנתונים מקודדים לתוך ה-URL של אובייקט ה-MSMessages: MSMessage.url = URL(string: "yourapp://state?data=\(encodedState)"). הנמען מנתח את ה-URL ב-willBecomeActive(with:). לא ניתן להשתמש ישירות ב-UserDefaults—לכל משתתף יש מכשיר משלו. לנתונים משותפים בין האפליקציה הראשית להרחבה, הגדר App Group: השתמש באותו מזהה group.com.yourapp.shared ב-Capabilities של שני היעדים. לאחר מכן קרא/כתוב דרך UserDefaults(suiteName:) ו-FileManager.containerURL(forSecurityApplicationGroupIdentifier:).
השוואה בין מצבי Compact ו-Expanded
| תכונה | Compact (~225 pt) | Expanded (מסך מלא) |
|---|---|---|
| גובה | ~225 pt | מסך מלא זמין |
| שימוש עיקרי | קלט מהיר, תצוגה מקדימה | ממשקים מורכבים, משחקים |
| מעבר | ברירת מחדל | requestPresentationStyle(.expanded) |
| הצגת הודעות | רק נכנסות | ניתן ליצור הודעות חדשות |
השוואה בין Sticker Pack ל-MSMessagesAppExtension
| תכונה | Sticker Pack | MSMessagesAppExtension |
|---|---|---|
| מורכבות פיתוח | נמוכה מאוד | בינונית/גבוהה |
| גמישות ממשק משתמש | אין | מלאה (UIKit/SwiftUI) |
| אינטראקטיביות | לא | כן |
| זמן יצירה | 1–3 ימים | 3–10 שבועות |
| תמיכה ברכישות | חינם בלבד | StoreKit 2 / Billing 6 |
טעויות נפוצות ופתרונות
קריסה בעת שימוש ב-UIActivityViewController — השתמש בממשק משתמש מותאם אישית. טעינה איטית עקב קאש — יישם NSCache עם countLimit ו-totalCostLimit. שגיאות חתימת קוד (פרופיל provisioning) — ודא שה-App ID כולל את היכולת iMessage. בעיות עם התראות push (APNs) בהרחבה — הגדר אישורים בנפרד עבור ה-App Group.
תהליך הפיתוח
- ניתוח תרחישים — קבע כיצד המשתמש מתקשר במצבי compact ו-expanded.
- עיצוב — ארכיטקטורה תוך התחשבות במגבלות זיכרון והעברת נתונים.
- יישום — כתיבת קוד ב-Swift/SwiftUI באמצעות MSMessagesAppViewController.
- אינטגרציה — הגדרת App Group, StoreKit 2, התראות push.
- בדיקות — על מכשירים אמיתיים (לפחות 2 מכשירי iPhone עם גרסאות iOS שונות).
- הכנה לפרסום — App Store Connect, TestFlight, מטא-דאטה.
- תמיכה — 30 ימים של תמיכה טכנית חינם לאחר השחרור.
מה כלול בעבודה
אתה מקבל: קוד מקור של הפרויקט עם הערות, App Groups ו-StoreKit מוגדרים, מטא-דאטה מוכן עבור App Store Connect, מדריך פרסום, ו-30 ימים של תמיכה טכנית לאחר השחרור. בנוסף, אנו מספקים תיעוד מלא המכסה ארכיטקטורה, זרימת נתונים והגדרת App Group; גישה למאגר עם היסטוריית גרסאות; הדרכה לצוות שלך על עבודה עם הרחבות; והגשה מובטחת ל-App Store עם תמיכה במהלך תהליך הבדיקה. במידת הצורך, אנו מסייעים בתיקון כל בעיות דחייה בתוך תקופת האחריות.
לוח זמנים ותקציב
Sticker Pack (ללא קוד): 1–3 ימים (עיצוב + הרכבה) — מ-$500. הרחבת iMessage עם כרטיסים אינטראקטיביים: 3 עד 5 שבועות — מ-$5,000. משחק מרובה משתתפים או החלפת נתונים מורכבת: 6 עד 10 שבועות — מ-$12,000. העלות נקבעת לאחר ניתוח תרחישים—אנו מבטיחים מבנה תקציב שקוף. צור קשר עבור לוח זמנים והערכת עלות מקדימה. קבל ייעוץ—נעריך את מורכבות המשימה שלך ונציע פתרון אופטימלי. הזמן פיתוח היום.







