App Clip은 기기에 설치하지 않고 즉시 실행되는 iOS 앱의 경량 버전입니다. iOS 14에서 도입된 이 기술은 사용자가 NFC 태그, QR 코드 또는 App Clip Code를 스캔하여 앱의 특정 기능에 액세스할 수 있게 합니다. App Clip의 크기는 10MB를 초과하지 않으며 실행하는 데 2초 미만이 소요됩니다. 이것은 완전한 설치 없이 네이티브 앱과 즉시 상호 작용할 수 있는 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은 5가지 메커니즘을 통해 활성화됩니다. 가장 일반적인 것은 NFC 태그(터치로 App Clip 실행), QR 코드(카메라 스캔으로 화면 하단에 App Clip 카드 표시), App Clip Codes(패턴 테두리와 내장 NFC 태그가 있는 Apple 독점 시각적 코드)입니다. App Clip은 Safari App Banner 및 iMessage 링크를 통해서도 실행됩니다.
App Clip Code는 Apple의 특허 기술입니다. QR 코드와 달리 App Clip Codes는 미학적으로 보입니다 — 브랜드 색상과 중앙의 로고를 지원하며 URL은 가장자리의 소리와 같은 파형으로 인코딩됩니다. 코드에는 내장 NFC 태그가 포함되어 있어 시각적 스캔과 터치의 이중 실행 메커니즘을 제공합니다. Apple은 App Store Connect 포털을 통해 App Clip Code 생성 도구를 제공합니다.
// SceneDelegate.swift — NSUserActivity를 통한 App Clip 실행 처리
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 — 결제 화면
}
}모든 트리거는 궁극적으로 호출 컨텍스트를 포함하는 webpageURL 매개변수가 있는 NSUserActivity를 생성합니다. App Clip은 이 URL을 구문 분석하고 해당 화면을 표시합니다. App Clip은 지리적 위치 트리거도 지원합니다 — iOS는 사용자가 특정 위치(예: App Clip이 있는 커피숍 근처)에 있을 때 App Clip을 제안할 수 있습니다.
App Clip 개발은 전체 앱의 기존 Xcode 프로젝트에서 시작됩니다. 새 App Clip 대상을 추가합니다 — 동일한 프로젝트, 동일한 팀 및 대부분의 공유 코드를 사용합니다. App Clip 대상에는 특정 기능에 필요한 파일, 스토리보드 및 리소스만 포함됩니다. Apple은 사전 구성된 entitlements 및 Info.plist 키가 있는 App Clip 템플릿을 제공합니다.
// 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()
// App Clip 카드용 컴팩트 UI
// 크기 감소를 위한 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)
}
}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에 의해 엄격하게 관리됩니다 — 압축된 상태에서 10MB 이하. 검사는 App Store에 업로드 단계에서 수행되며 제한을 초과하는 빌드는 거부됩니다. 크기에는 바이너리 코드, 리소스(스토리보드, asset 카탈로그) 및 연결된 프레임워크가 포함됩니다. Swift 런타임 라이브러리는 iOS의 일부이며 계산되지 않지만 타사 프레임워크는 크기를 증가시킵니다.
| 최적화 방법 | 효과 | 참고 |
|---|---|---|
| Asset 카탈로그 씨닝 | 30~60% | 단일 이미지 스케일(3x), 사용되지 않는 기기 관용구 제외 |
| SF Symbols | 상당함 | 시스템 아이콘은 무료 — 사용자 정의 아이콘 포함 금지 |
| UIKit 대신 SwiftUI | 20~30% | SwiftUI는 더 적은 연결 프레임워크 필요 |
| 최소 종속성 | 가변 | App Clip 기능에 필요한 프레임워크만 포함 |
| 온디맨드 리소스 | 가변 | 시작 후 중요하지 않은 데이터(이미지) 로드 |
| 코드 스트리핑 | 10~40% | Swift에서 데드 코드 스트리핑 및 전체 모듈 최적화 |
Xcode는 아카이빙 후 Organizer에서 App Clip 크기 보고서를 제공합니다. 보고서는 크기를 구성 요소(코드, 리소스, 프레임워크)별로 분류하고 예상 다운로드 크기를 표시합니다. Apple은 다양한 제공 채널의 압축 변동을 고려하여 App Clip을 8MB 이내로 유지할 것을 권장합니다.
App Clip 사용 시나리오는 4단계로 구성됩니다. 발견: 사용자가 물리적 세계에서 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로, App Clip 화면 하단에 나타나 전체 앱 설치를 제안하는 네이티브 iOS 요소입니다. SKOverlay는 App Store로 이동할 필요가 없으며 현재 앱의 컨텍스트에서 작동합니다. 사용자는 한 번의 탭으로 전체 앱을 설치할 수 있으며, App Clip은 설치 후 생성된 모든 데이터를 자동으로 전송합니다.
| 특성 | App Clip (iOS) | Instant App (Android) |
|---|---|---|
| 크기 제한 | 압축 10MB | 총 10MB |
| 실행 방법 | NFC, QR, App Clip Code, Safari, iMessage, 위치 | 딥 링크, Google Play “지금 시도”, NFC, QR |
| 개발 | Xcode + Swift (단일 대상) | Android Studio + Kotlin (기능 모듈) |
| 지원 | 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세대), A9 칩 이상의 모든 iPad에서 작동합니다. App Clip Code 스캔은 내장 카메라 앱을 통해 사용할 수 있습니다. NFC 태그를 통한 실행에는 iPhone XR/XS 이상이 필요합니다(iPhone 7/8은 NFC를 읽을 수 있지만 App Clip을 실행할 수 없음).
아니요, App Clip은 App Store에서 완전한 iOS 앱과 연결되어야 합니다. App Clip은 독립적으로 게시될 수 없습니다. 전체 앱과 App Clip은 동일한 Apple Developer Team ID 및 Bundle ID(.Clip 접미사 포함)를 사용합니다. Apple은 App Clip을 전체 앱의 진입점으로 위치시키며 독립적인 배포 메커니즘으로 보지 않습니다.
최대 App Clip 크기는 압축 10MB입니다. Apple은 App Store에 업로드할 때 이 제한을 엄격히 확인합니다. 압축 차이를 고려하여 크기를 8MB 이내로 유지하는 것이 좋습니다. SF Symbols, SwiftUI를 사용하고 타사 종속성을 최소화하여 제한 내에 유지하세요.
아니요, App Clips는 푸시 알림을 보낼 수 없습니다. Apple은 스팸을 방지하기 위해 의도적으로 이 기능을 차단했습니다. 로컬 알림은 App Clip의 짧은 수명 내에서 허용됩니다. 알림을 받으려면 사용자가 전체 앱을 설치해야 합니다. 이것이 PWA 및 완전한 네이티브 앱과의 주요 차이점입니다.
iOS는 제한된 시간(일반적으로 7~30일 비활성) 동안 App Clip 데이터를 저장합니다. 사용자가 전체 앱을 설치하면 데이터가 CloudKit을 통해 자동으로 전송됩니다. 설치가 없으면 iOS가 App Clip과 해당 데이터를 삭제합니다. 사용자는 설정의 “App Clips” 섹션에서 수동으로 App Clip을 삭제할 수도 있습니다.
간단한 시나리오(주문 + 결제)의 경우 기존 iOS 앱에 App Clip을 추가하는 데 일반적으로 한 개발자 기준 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는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.