Alle Open-Source-Pakete
PlattformSwift

AppClipsStudio

Invocation-Routing, Größenprüfungen und Website Association für iOS App Clips.

5SterneNeueste Version: v2.0.0 · Aktualisiert: 15. Oktober 2026
Plattformen:iOS 16macOS 13

Lizenz: MIT

Ein Swift-Package für iOS App Clips und die Apps, zu denen sie gehören. Es validiert die Invocation-URL, die das System beim Start übergibt, und leitet sie zu Ihren Screens weiter – so wie App Store Connect sie zu App-Clip-Experiences weiterleitet –, bestätigt, dass sich die Person dort befindet, wo der Code ist, und übergibt die Daten des App Clips an die vollständige App. Das Kommandozeilenwerkzeug appclipstudio prüft vor dem Upload die Größe jeder Variante, die App-Clip-Code-URLs, die apple-app-site-association-Datei und die Associated-Domains-Einträge. Keine Abhängigkeiten.

Funktionen

  • Invocation-Routing nach Apples Matching-Regel: Patterns wie /table/:number und /shop/*, das spezifischste Präfix gewinnt, Handler können eine Übereinstimmung ablehnen, und ein Fallback deckt den Rest eines registrierten Präfixes ab
  • Nicht vertrauenswürdige Eingaben bleiben begrenzt: nur https, höchstens 2.048 Byte, 32 Pfadkomponenten und 64 Query-Items, keine . oder .. Komponenten und keine Steuer- oder Formatzeichen im decodierten Host, Pfad oder Query
  • Größenprüfung pro Variante: Apples Limits von 10, 15 und 100 MB, angewendet auf Xcodes App Thinning Size Report.txt nach iOS-Version, Deployment Target und Invocation-Typ, mit einem Exit-Status für CI
  • Website Association: apple-app-site-association erzeugen und validieren, appclips:- und applinks:-Entitlement-Einträge prüfen und App-Clip-Code-URLs gegen Apples Regeln linten
  • HandoffStore übergibt einen versionierten, ablaufenden, größenbegrenzten Codable-Wert über die gemeinsame App Group an die vollständige App
  • Standortbestätigung mit einer validierten Region von höchstens 500 m und dem App-Store-Overlay für die vollständige App
  • Eine Beispiel-App und ein App Clip (Examples/CoffeeShop), aus gemeinsamen Quellen gebaut; CI baut sie, und die README-Beispiele werden daraus kopiert

Schnellstart

swift
1import AppClipsStudio
2import SwiftUI
3 
4enum Screen: Equatable {
5 case welcome
6 case table(Int)
7}
8 
9struct ContentView: View {
10 @State private var screen = Screen.welcome
11 
12 var body: some View {
13 Group {
14 switch screen {
15 case .welcome: Text("Scan a table tag")
16 case .table(let number): Text("Table \(number)")
17 }
18 }
19 .font(.largeTitle)
20 .onInvocation { invocation in
21 screen = (try? Self.router.route(invocation)) ?? .welcome
22 }
23 }
24 
25 static let router: InvocationRouter<Screen> = {
26 var router = InvocationRouter<Screen>()
27 try? router.add("/table/:number") { match in
28 match.integer("number").map(Screen.table)
29 }
30 router.fallback { _ in .welcome }
31 return router
32 }()
33}

Installation

Swift Package Manager

swift
1dependencies: [
2 .package(url: "https://github.com/muhittincamdali/AppClipsStudio.git", from: "2.0.0")
3],
4targets: [
5 .target(name: "YourAppFeature", dependencies: [
6 .product(name: "AppClipsStudio", package: "AppClipsStudio")
7 ])
8]

Xcode

text
1https://github.com/muhittincamdali/AppClipsStudio.git

Command-line tool

sh
1git clone https://github.com/muhittincamdali/AppClipsStudio.git
2cd AppClipsStudio
3swift build -c release
4cp .build/release/appclipstudio /usr/local/bin/ # or run it with `swift run appclipstudio`

Screenshots

Beispiel-App-Clip, geöffnet über eine Tischetiketten-URL: Tisch 12 in der Harbor Street, helles Design
Beispiel-App-Clip, geöffnet über eine Tischetiketten-URL: Tisch 12 in der Harbor Street, dunkles Design
Beispiel-App-Clip, geöffnet über eine Poster-URL: Flat-White-Angebot, helles Design
Beispiel-App-Clip, geöffnet über eine Poster-URL: Flat-White-Angebot, dunkles Design

Zeitleiste

  1. Repository als modulares App-Clip-Framework eröffnet

  2. v1.0.0 getaggt; Dokumentations- und CI-Arbeit, während die Modul-Quellen Platzhalter blieben

  3. Aufräumen: Die Module wurden in ein einziges Target mit wenigen Stubs zusammengefasst

  4. Als 2.0.0 aus Apples App-Clip-Dokumentation neu aufgebaut: Invocation-Routing, Größenprüfungen, Website Association und die appclipstudio-CLI; keine 1.0.0-API erhalten

Links

Verwandter Artikel

Artikel lesen (English)