プラットフォームSwift
AppClipsStudio
iOS App Clips のための起動URLのルーティング、サイズチェック、ウェブサイト連携。
5スター数最新リリース: v2.0.0 · 更新日: 2026年10月15日
対応プラットフォーム:iOS 16macOS 13
ライセンス: MIT
iOS の App Clip と、それが属するアプリのための Swift パッケージです。システムが起動時に渡す起動URLを検証し、App Store Connect が App Clip experience にルーティングするのと同じ方法で自分の画面にルーティングし、その人がコードのある場所にいることを確認し、App Clip のデータをフルアプリに渡します。付属の appclipstudio コマンドラインツールは、アップロード前に各バリアントのサイズ、App Clip Code の URL、apple-app-site-association ファイル、Associated Domains のエントリをチェックします。依存関係はありません。
機能
- Apple のマッチングルールに基づく起動URLのルーティング: /table/:number や /shop/* のようなパターンで、最も具体的なプレフィックスが優先され、handler はマッチを拒否でき、登録済みプレフィックスの残りは fallback でカバーされます
- 信頼できない入力は境界内に収まります: https のみ、最大2,048バイト、パスコンポーネント32個、クエリ項目64個まで、. や .. のコンポーネントは不可、デコード後の host・path・query に制御文字やフォーマット文字を含みません
- バリアントごとのサイズチェック: Apple の 10MB・15MB・100MB の上限を、iOS バージョン、deployment target、起動タイプ別に Xcode の App Thinning Size Report.txt に適用し、CI 用の exit status を返します
- ウェブサイト連携: apple-app-site-association の生成と検証、appclips: と applinks: の entitlement エントリのチェック、Apple のルールに基づく App Clip Code URL の lint
- HandoffStore は、バージョン管理され、有効期限とサイズ制限のある Codable な値を、共有の App Group 経由でフルアプリに渡します
- 最大500mまでの検証済みリージョンによる位置確認、およびフルアプリ用の App Store overlay
- 共有ソースから作られたサンプルアプリと App Clip (Examples/CoffeeShop); CI がこれをビルドし、README のサンプルはここからコピーされています
クイックスタート
swift
1import AppClipsStudio2import SwiftUI3 4enum Screen: Equatable {5 case welcome6 case table(Int)7}8 9struct ContentView: View {10 @State private var screen = Screen.welcome11 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 in21 screen = (try? Self.router.route(invocation)) ?? .welcome22 }23 }24 25 static let router: InvocationRouter<Screen> = {26 var router = InvocationRouter<Screen>()27 try? router.add("/table/:number") { match in28 match.integer("number").map(Screen.table)29 }30 router.fallback { _ in .welcome }31 return router32 }()33}インストール
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.gitCommand-line tool
sh
1git clone https://github.com/muhittincamdali/AppClipsStudio.git2cd AppClipsStudio3swift build -c release4cp .build/release/appclipstudio /usr/local/bin/ # or run it with `swift run appclipstudio`スクリーンショット




タイムライン
モジュール式の App Clip フレームワークとしてリポジトリが公開されました
v1.0.0 がタグ付けされました。ドキュメントと CI の作業が行われましたが、モジュールのソースは placeholder のままでした
整理: モジュールが数個の stub からなる単一の target に統合されました
Apple の App Clip ドキュメントに基づき 2.0.0 として作り直しました: 起動URLのルーティング、サイズチェック、ウェブサイト連携、appclipstudio CLI。1.0.0 の API は維持されていません