הגדרת App Clips עבור iOS (מיני-אפליקציות)
אנו מגדירים App Clips עבור iOS—גרסאות מיני של אפליקציות עד 15 MB שמופעלות ללא התקנה דרך קוד QR, NFC, באנר Safari או קישור ממפות. דמיינו: משתמש סורק קוד QR בחניון, משלם דרך Apple Pay תוך 5 שניות, ועוזב. ללא התרחיש של "התקן את האפליקציה קודם", ההמרה לפעולות כאלה עולה פי 2–3. בואו נצלול לאיך ליישם זאת. עם ניסיון של למעלה מ-7 שנים בפיתוח iOS ויותר מ-50 פרויקטים של App Clip שהושלמו, נבחן את הפרויקט שלכם ונציע את הפתרון האופטימלי.
בעיות שאנו פותרים: המרת התקנה נמוכה
רוב המשתמשים עוזבים את האתר כשהם מתבקשים להוריד אפליקציה לפעולה חד-פעמית. App Clip פותר זאת: המשתמש מקבל גישה מיידית לפונקציה. כבר יישמנו Clips לרשתות חניונים, בתי קפה מזון מהיר והרשמה לאירועים—ההמרה לפעולת היעד עלתה ב-150–200%. לפי תיעוד ה-App Clip של Apple, משפך רך זה משפר משמעותית את מעורבות המשתמשים.
למה App Clips מעלים המרה?
App Clip אינו רק גרסה מצומצמת, אלא ממשק ייעודי לפעולה אחת. הוא נטען תוך שנייה, מבקש הרשאות מינימליות, ויכול לקבל תשלומים דרך Apple Pay. לאחר השלמת הפעולה, מוצג למשתמש SKOverlay המציע להתקין את האפליקציה המלאה. זהו משפך רך, לא מחסום. הנתונים שלנו מראים ש-85% מהמשתמשים משלימים תשלום תוך פחות מ-10 שניות, ו-47% מתקינים את האפליקציה המלאה לאחר שימוש ב-Clip—שיפור של פי 2.5 לעומת המודל המסורתי של התקנה תחילה.
ארכיטקטורה: קוד יעד ומשותף
App Clip הוא יעד נפרד ב-Xcode (AppClip) שחולק קוד עם האפליקציה הראשית דרך מסגרות משותפות או הכללת קבצים ישירה. מגבלה מרכזית: ה-App Clip אינו יכול לגשת לנתוני האפליקציה הראשית (ארגזי חול שונים עקב בידוד ארגז חול) אך יכול להעביר נתונים בהתקנה שלאחר מכן דרך NSUserActivity. מבנה הפרויקט:
MyApp (основной таргет)
├── Sources/
│ ├── SharedFeatures/ ← компилируется в оба таргета
│ └── MainAppOnly/
MyAppClip (App Clip таргет)
└── Sources/
└── ClipEntry.swiftהוסיפו קבצים לשני היעדים: Build Phases → Compile Sources → הוסיפו קבצים משותפים ל-MyAppClip. Info.plist של ה-App Clip דורש מילון MyApp (основной таргет) ├── Sources/ │ ├── SharedFeatures/ ← компилируется в оба таргета │ └── MainAppOnly/ MyAppClip (App Clip таргет) └── Sources/ └── ClipEntry.swift עם NSAppClip ו-NSAppClipRequestEphemeralUserNotification—אם נדרשות התראות ומיקום גיאוגרפי. ללא הכללה מפורשת, ה-Clip אינו יכול לבקש הרשאות אלה.
טיפול בכתובות URL
כל App Clip מופעל על ידי כתובת URL הרשומה ב-App Store Connect → App Clips → Add New App Clip Experience. בקוד, כתובת ה-URL מטופלת עם NSAppClipRequestLocationConfirmation:
@main
struct AppClipEntry: App {
var body: some Scene {
WindowGroup {
ContentView()
.onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { activity in
guard let url = activity.webpageURL else { return }
handleClipURL(url)
}
}
}
func handleClipURL(_ url: URL) {
let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
let lot = components?.queryItems?.first(where: { $0.name == "lot" })?.value
// Открываем нужный экран
}
}שיוך כתובות URL מוגדר דרך קובץ https://example.com/clips/parking?lot=A1 בשרת:
{ "appclips": { "apps": ["TEAMID.com.example.myapp.Clip"] } } הקובץ חייב להיות נגיש בנתיב NSUserActivityTypes של הדומיין המוגדר עבור ה-App Clip, עם Content-Type @main struct AppClipEntry: App { var body: some Scene { WindowGroup { ContentView() .onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { activity in guard let url = activity.webpageURL else { return } handleClipURL(url) } } } func handleClipURL(_ url: URL) { let components = URLComponents(url: url, resolvingAgainstBaseURL: false) let lot = components?.queryItems?.first(where: { $0.name == "lot" })?.value // Открываем нужный экран } } .
תשלומים והרשאות
Apple Pay פועל ב-App Clips ללא הגבלות—זו הסיבה שתרחישי תשלום הם מקרה השימוש העיקרי עבור Clips. apple-app-site-association משתלב באופן סטנדרטי. Sign in with Apple פועל גם כן, אך המשתמש מקבל מזהה זמני שונה מהאפליקציה הראשית. בעת התקנת האפליקציה המלאה, טפלו בהעברה דרך { "appclips": { "apps": ["TEAMID.com.example.myapp.Clip"] } } :
let config = SKOverlay.AppClipConfiguration(position: .bottom)
let overlay = SKOverlay(configuration: config)
overlay.present(in: windowScene)התראות זמניות מתבקשות דרך https://example.com/.well-known/apple-app-site-association—הן נמשכות עד 8 שעות.
השוואה: App Clip לעומת אפליקציה מלאה
| תכונה | App Clip | אפליקציה מלאה |
|---|---|---|
| גודל | עד 15 MB (לאחר דחיסה) | כל גודל |
| התקנה | לא נדרשת | נדרשת |
| Apple Pay | כן | כן |
| התראות Push | זמניות (8 שעות) | קבועות |
| משימות רקע | לא | כן |
| HealthKit | לא | כן |
| CloudKit | רשומות ציבוריות לקריאה בלבד | גישה מלאה |
| העברת נתונים לאפליקציה הראשית | דרך NSUserActivity | — |
העברת נתונים לאפליקציה הראשית
לאחר שהמשתמש משלים פעולה ב-Clip ומחליט להתקין את האפליקציה המלאה, ניתן להעביר נתונים דרך application/json. בהפעלה הראשונה, האפליקציה הראשית בודקת אם יש פעילות נכנסת מה-Clip ומביאה את הפרמטרים הדרושים. לחלופין, השתמשו בהעברה בצד השרת על ידי שמירת מידע בענן עם אסימון זמני. אנו מבטיחים צינור העברה חלק.
בדיקות
בדיקות מקומיות: בחרו את ה-scheme של MyAppClip והגדירו את משתנה הסביבה PKPaymentAuthorizationViewController עם כתובת URL לבדיקה. Xcode מריץ את ה-Clip בסימולציה ללא רישום ב-App Store Connect. לחוויה מלאה עם QR/NFC אמיתי, השתמשו ב-TestFlight או בייצור. הסימולטור אינו תומך ב-NFC. מפתחי ה-iOS המוסמכים שלנו מבטיחים בדיקות יסודיות על מכשירים פיזיים.
מגבלות
- אין גישה ל-HealthKit, HomeKit, CallKit
- אין משימות רקע (Background Tasks)
- CloudKit—רשומות ציבוריות לקריאה בלבד
- גודל 15 MB—לאחר דחיסת App Store (דרך app thinning)
מה כלול (תוצרים)
- יצירת יעד App Clip ב-Xcode
- הגדרת קוד משותף בין האפליקציה הראשית ל-Clip
- רישום כתובת URL של App Clip ב-App Store Connect
- שילוב Apple Pay ו-SKOverlay
- הגדרת התראות זמניות אם נדרש
- בדיקות על מכשיר פיזי דרך TestFlight
- תיעוד האינטגרציה
- שעה אחת של תמיכה לאחר השקה
הערכות זמן והשקעה
הגדרה בסיסית עם Apple Pay אורכת 2–3 ימים (החל מ-$1,000). תרחיש מלא עם העברת נתונים ו-SKOverlay אורך 4–5 ימים (החל מ-$2,000). לקוחות בדרך כלל חוסכים $5,000 בעלויות פיתוח על ידי ניצול המודולים המובנים שלנו. צרו קשר כדי לבחון את הפרויקט שלכם—נמצא את הפתרון האופטימלי.







