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 и associated domains для обработки 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 optimization в 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 и работает в контексте текущего приложения. Пользователь может установить полное приложение в один tap, а 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 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также