App Clip คือเวอร์ชันน้ำหนักเบาของแอป iOS ที่เปิดใช้งานทันทีโดยไม่ต้องติดตั้งบนอุปกรณ์ เปิดตัวใน iOS 14 เทคโนโลยีนี้ช่วยให้ผู้ใช้เข้าถึงฟังก์ชันเฉพาะของแอปผ่านการสแกนแท็ก NFC, QR โค้ด หรือ App Clip Code ขนาดของ App Clip ไม่เกิน 10 MB และการเปิดใช้ใช้เวลาไม่ถึงสองวินาที นี่คือโซลูชันของ 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 MB เมื่อบีบอัด การตรวจสอบจะดำเนินการในขั้นตอนอัปโหลดไปยัง App Store บิลด์ที่เกินขีดจำกัดจะถูกปฏิเสธ ขนาดรวมถึงโค้ดไบนารี ทรัพยากร (สตอรีบอร์ด, แค็ตตาล็อกทรัพย์สิน) และเฟรมเวิร์กที่เชื่อมโยง ไลบรารีรันไทม์ของ Swift เป็นส่วนหนึ่งของ iOS และไม่นับรวม แต่เฟรมเวิร์กของบุคคลที่สามเพิ่มขนาด
| วิธีการเพิ่มประสิทธิภาพ | ผลลัพธ์ | หมายเหตุ |
|---|---|---|
| การทำให้แค็ตตาล็อกทรัพย์สินบางลง | 30–60% | สเกลภาพเดียว (3x), ไม่รวม idioms อุปกรณ์ที่ไม่ได้ใช้ |
| SF Symbols | สำคัญ | ไอคอนระบบฟรี — ไม่รวมไอคอนที่กำหนดเอง |
| SwiftUI แทน UIKit | 20–30% | SwiftUI ต้องการเฟรมเวิร์กที่เชื่อมโยงน้อยกว่า |
| การพึ่งพาน้อยที่สุด | แปรผัน | รวมเฉพาะเฟรมเวิร์กที่จำเป็นสำหรับฟังก์ชัน App Clip |
| ทรัพยากรตามต้องการ | แปรผัน | การโหลดข้อมูลที่ไม่สำคัญ (ภาพ) หลังจากเปิดใช้ |
| การตัดโค้ด | 10–40% | Dead code stripping และ whole-module optimization ใน Swift |
Xcode จัดเตรียม รายงานขนาด App Clip ใน Organizer หลังจากการเก็บถาวร รายงานแบ่งขนาดตามองค์ประกอบ (โค้ด, ทรัพยากร, เฟรมเวิร์ก) และแสดงขนาดดาวน์โหลดโดยประมาณ Apple แนะนำให้เก็บ App Clip ไว้ภายใน 8 MB เพื่อพิจารณาความแตกต่างของการบีบอัดในช่องทางการจัดส่งต่างๆ
สถานการณ์การใช้งาน 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 MB บีบอัด | รวม 10 MB |
| วิธีการเปิดใช้ | NFC, QR, App Clip Code, Safari, iMessage, ตำแหน่ง | ดีพลิงก์, Google Play “ลองตอนนี้”, NFC, QR |
| การพัฒนา | Xcode + Swift (target เดียว) | 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) และ 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 MB เมื่อบีบอัด Apple ตรวจสอบขีดจำกัดนี้อย่างเข้มงวดเมื่ออัปโหลดไปยัง App Store แนะนำให้เก็บขนาดภายใน 8 MB เพื่อพิจารณาความแตกต่างของการบีบอัด ใช้ SF Symbols, SwiftUI และลดการพึ่งพาของบุคคลที่สามให้น้อยที่สุดเพื่อให้อยู่ในขีดจำกัด
ไม่, App Clips ไม่สามารถส่งการแจ้งเตือนแบบพุชได้ 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 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม