すべてのオープンソースパッケージ
プラットフォーム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 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}

インストール

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`

スクリーンショット

テーブルタグの URL から開かれたサンプル App Clip: Harbor Street の Table 12、ライトモード
テーブルタグの URL から開かれたサンプル App Clip: Harbor Street の Table 12、ダークモード
ポスターの URL から開かれたサンプル App Clip: Flat White のオファー、ライトモード
ポスターの URL から開かれたサンプル App Clip: Flat White のオファー、ダークモード

タイムライン

  1. モジュール式の App Clip フレームワークとしてリポジトリが公開されました

  2. v1.0.0 がタグ付けされました。ドキュメントと CI の作業が行われましたが、モジュールのソースは placeholder のままでした

  3. 整理: モジュールが数個の stub からなる単一の target に統合されました

  4. Apple の App Clip ドキュメントに基づき 2.0.0 として作り直しました: 起動URLのルーティング、サイズチェック、ウェブサイト連携、appclipstudio CLI。1.0.0 の API は維持されていません

リンク

関連記事

記事を読む (English)