App Clip — легка версія iOS застосунку, яка запускається миттєво без встановлення на пристрій. Представлена в iOS 14, технологія дозволяє користувачеві отримати доступ до конкретної функції застосунку через сканування NFC-мітки, QR-коду або App Clip Code. Розмір App Clip не перевищує 10 МБ, а запуск займає менше двох секунд. Це рішення Apple для миттєвої взаємодії з нативним застосунком без необхідності його повноцінного встановлення.
Ключові висновки
App Clip — технологія Apple для iOS, яка дозволяє запускати невелику частину повноцінного застосунку без його встановлення. Коли користувач сканує NFC-мітку, QR-код або App Clip Code, операційна система завантажує та відкриває App Clip у вигляді картки поверх поточного екрана. Apple розробила App Clip для сценаріїв “оплатити, замовити або зареєструватися” — дій, які повинні виконуватися без тертя та очікування.
App Clip працює в епізодичному режимі. iOS зберігає дані App Clip обмежений час (зазвичай кілька днів або до явного видалення користувачем). Якщо користувачеві знову потрібна та сама функція, App Clip завантажується повторно. Apple навмисно обмежує збереження App Clip, стимулюючи встановлення повного застосунку для постійного використання. Дані, створені в App Clip, автоматично передаються в повний застосунок при його встановленні через CloudKit.
Реальні приклади: сканування NFC-мітки на столі в ресторані для замовлення та оплати (Panera, Pizza Hut), QR-код на орендованому самокаті для розблокування (Lime, Bird), App Clip Code на паркоматі для оплати (PayByPhone), сканування товару в магазині для покупки (Shopify). Усі ці сценарії об'єднує одне — транзакційне завдання, яке виграє від відсутності етапу встановлення.
App Clip активується через п'ять механізмів. Найпоширеніші — NFC-мітки (дотик запускає App Clip), QR-коди (сканування камерою показує картку App Clip внизу екрана) та App Clip Codes (фірмові візуальні коди Apple з візерунчастою рамкою та вбудованою NFC-міткою). App Clip також запускається через Safari App Banner і посилання в iMessage.
App Clip Code — запатентована технологія Apple. На відміну від QR-кодів, App Clip Codes виглядають естетично — вони підтримують кольори бренду та логотип у центрі, а URL кодується в звукоподібних хвилях по краях. Код містить вбудовану NFC-мітку, забезпечуючи подвійний механізм запуску: візуальне сканування та дотик. Apple надає інструменти генерації App Clip Code через портал App Store Connect.
// SceneDelegate.swift — обробка запуску App Clip через NSUserActivity
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene,
willContinueUserActivityWithType userActivityType: String) {
// Підготовка до вхідного NSUserActivity
}
func scene(_ scene: UIScene,
continue userActivity: NSUserActivity) {
guard let invocationURL = userActivity.webpageURL else { return }
// Парсинг URL і перехід на потрібний екран
handleInvocationURL(invocationURL)
}
private func handleInvocationURL(_ url: URL) {
// Приклад: /order/restaurantID — екран замовлення
// Приклад: /pay/parkingID — екран оплати
}
}Усі тригери в кінцевому підсумку створюють NSUserActivity з параметром webpageURL, який містить контекст виклику. App Clip парсить цей URL і відображає відповідний екран. App Clip також підтримує геолокаційні тригери — iOS може запропонувати App Clip, коли користувач знаходиться поруч із певним місцем (наприклад, біля кав'ярні з App Clip).
Розробка App Clip починається з існуючого Xcode-проєкту повноцінного застосунку. Ви додаєте новий target App Clip — він використовує той самий проєкт, ту саму команду та більшу частину спільного коду. Target App Clip включає лише ті файли, сторіборди та ресурси, які потрібні для конкретної функції. Apple надає шаблон App Clip із попередньо налаштованими entitlements та ключами Info.plist.
// AppClip/ProductViewModel.swift — спільна логіка між App Clip і повним застосунком
import Foundation
import StoreKit
class ProductViewModel: ObservableObject {
@Published var items: [Product] = []
@Published var total: Decimal = 0
func checkout() {
// Відправка замовлення через API
}
func showInstallPrompt() {
// Показ SKOverlay для встановлення повного застосунку
guard let scene = UIApplication.shared()
.connectedScenes
.first(where: { $0 is UIWindowScene }) as? UIWindowScene else { return }
let overlay = SKOverlay(configuration: SKOverlay.AppClipConfiguration(
position: .bottom
))
overlay.present(in: scene)
}
}
// AppClip/MainViewController.swift — головний екран App Clip
class MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Компактний UI для картки App Clip
// Використання SF Symbols для зниження розміру
// Завантаження тільки даних для поточної транзакції
}
@IBAction func openFullApp(_ sender: Any) {
// Відкриття сторінки застосунку в App Store
guard let url = URL(string: "https://apps.apple.com/app/id123456789") else { return }
UIApplication.shared.open(url)
}
}Target App Clip використовує той самий Apple Developer Team ID та Bundle ID, що й основний застосунок (із суфіксом .Clip). Ключові entitlements: com.apple.developer.app-clip та пов'язані домени для обробки URL. App Clip підтримує Apple Pay, Sign in with Apple, StoreKit для покупок і Core Location. Деякі фреймворки недоступні: фонові режими, HealthKit, Media Library та окремі сенсорні API.
Ліміт розміру App Clip суворо контролюється Apple — не більше 10 МБ у стисненому вигляді. Перевірка виконується на етапі завантаження в App Store; збірки, що перевищують ліміт, відхиляються. До розміру входять бінарний код, ресурси (сторіборди, asset catalogs) і пов'язані фреймворки. Бібліотеки Swift runtime входять до складу iOS і не враховуються, однак сторонні фреймворки збільшують розмір.
| Метод оптимізації | Ефект | Примітки |
|---|---|---|
| Thinning asset catalogs | 30–60% | Один масштаб зображень (3x), виключення невикористовуваних device idioms |
| SF Symbols | Значно | Системні іконки безкоштовні — не включайте кастомні |
| SwiftUI замість UIKit | 20–30% | SwiftUI потребує менше пов'язаних фреймворків |
| Мінімум залежностей | Змінний | Підключайте лише фреймворки, потрібні для функції App Clip |
| On-demand ресурси | Змінний | Завантаження некритичних даних (зображення) після запуску |
| Стрипінг коду | 10–40% | Dead code stripping та whole-module оптимізація в Swift |
Xcode надає звіт про розмір App Clip в Organizer після архівації. Звіт розбиває розмір за компонентами (код, ресурси, фреймворки) та показує оціночний розмір завантаження. Apple рекомендує тримати App Clip в межах 8 МБ для врахування варіацій стиснення в різних каналах доставки.
Сценарій використання App Clip складається з чотирьох етапів. Виявлення: користувач зустрічає NFC-мітку, QR-код або App Clip Code у фізичному світі. Запуск: сканування або дотик завантажує App Clip (менше 2 секунд, зазвичай 1 секунда). Взаємодія: App Clip відкривається у вигляді картки з єдиною функцією — екран замовлення, оплати або бронювання. Завершення: користувач виконує завдання та бачить пропозицію встановити повний застосунок через SKOverlay або посилання на App Store.
Apple приділяє особливу увагу конфіденційності в App Clip. Система запитує дозволи на камеру, геолокацію та сповіщення окремо для App Clip. Дані, створені в App Clip (платіжна інформація, вподобання), зберігаються локально та передаються в повний застосунок через CloudKit при його встановленні. App Clip не може запитувати чутливі дозволи (Health, Motion, Media Library) — для цього потрібне встановлення повного застосунку.
Важлива особливість — SKOverlay, нативний елемент iOS, який відображається в нижній частині екрана App Clip та пропонує встановити повний застосунок. SKOverlay не вимагає переходу в App Store і працює в контексті поточного застосунку. Користувач може встановити повний застосунок одним дотиком, а App Clip автоматично передає всі створені дані після встановлення.
| Характеристика | App Clip (iOS) | Instant App (Android) |
|---|---|---|
| Ліміт розміру | 10 МБ стиснений | 10 МБ загальний |
| Методи запуску | NFC, QR, App Clip Code, Safari, iMessage, геолокація | Deep links, Google Play “Спробувати”, NFC, QR |
| Розробка | Xcode + Swift (один target) | Android Studio + Kotlin (feature modules) |
| Підтримка | iOS 14+ (iPhone, iPod touch) | Android 5.0+ (API 21+) |
| Зберігання даних | Тимчасове, передається в повний застосунок | Тимчасове (cookie API), передається |
| Монетизація | Apple Pay, StoreKit | Google Pay, Google Play Billing |
| Візуальний тригер | App Clip Code (власний формат) | Стандартні QR-коди |
Обидві технології — App Clip та Android Instant App — вирішують одне завдання: миттєвий запуск нативного застосунку без встановлення, але використовують різні платформні підходи. App Clip більш обмежений (тільки iOS, менша екосистема), але пропонує глибоку інтеграцію з Apple Pay та екосистемою пристроїв Apple. Instant Apps виграють за рахунок ширшого охоплення Android та гнучких тригерів, включаючи стандартні QR-коди без додаткової інфраструктури.
Часті запитання
App Clips потребують iOS 14 або новіше та працюють на iPhone 6s і новіше, iPod touch (7-го покоління) та всіх iPad з чипом A9 або новіше. Сканування App Clip Code доступне через вбудований застосунок Камера. Запуск через NFC-мітки вимагає iPhone XR/XS або новіше (iPhone 7/8 можуть читати NFC, але не запускати App Clip).
Ні, App Clip обов'язково повинен бути пов'язаний із повноцінним iOS застосунком в App Store. App Clip не може бути опублікований самостійно. Повний застосунок і App Clip використовують один Apple Developer Team ID і Bundle ID (із суфіксом .Clip). Apple позиціонує App Clip як вхідну точку до повного застосунку, а не як самостійний механізм поширення.
Максимальний розмір App Clip — 10 МБ у стисненому вигляді. Apple суворо перевіряє це обмеження при завантаженні в App Store. Рекомендується тримати розмір в межах 8 МБ для врахування відмінностей у стисненні. Використовуйте SF Symbols, SwiftUI та мінімізуйте сторонні залежності для дотримання ліміту.
Ні, App Clips не можуть надсилати push-сповіщення. Apple навмисно заблокувала цю можливість для запобігання спаму. Локальні сповіщення дозволені в межах короткого часу життя App Clip. Для сповіщень користувач повинен встановити повний застосунок. Це ключова відмінність від PWA та повноцінних нативних застосунків.
iOS зберігає дані App Clip обмежений час (зазвичай 7–30 днів бездіяльності). Якщо користувач встановлює повний застосунок, дані автоматично передаються через CloudKit. Якщо встановлення не відбувається, iOS видаляє App Clip та його дані. Користувач також може вручну видалити App Clip через Налаштування в розділі “App Clips”.
Для простого сценарію (замовлення + оплата) додавання App Clip до існуючого iOS застосунку зазвичай займає 2–4 тижні для одного розробника. App Clip використовує більшу частину кодової бази основного застосунку, тому витрати значно нижчі, ніж створення окремого застосунку з нуля. Основний час йде на оптимізацію розміру та налаштування тригерів.
App Clip підтримує Apple Pay, Sign in with Apple, StoreKit, Core Location, MapKit та PushKit (тільки для VoIP). Недоступні HealthKit, ResearchKit, HomeKit, CarPlay, Metal (у повному обсязі), фонові режими (background fetch, location updates) та Media Library. App Clip також не може отримувати доступ до мікрофона та деяких датчиків пристрою.
Коротке резюме
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також