Background Assets について。機械学習の学習済みモデルを配置するのに使えそうなのでみてみた。Apple Developer Program に付帯する 200GB の容量を使ってホスティングできるのは大きい。
0:00 – Introduction
- アプリとアセットが人々のデバイスでどのように連携するか、Apple hosting の使用方法について説明
- 現在利用可能なアセット配信技術(Background Assets を含む)の復習
- iOS, iPadOS, macOS, tvOS, visionOS 向けの新機能の統合方法とローカルテスト
- Apple hosting を使用したベータテストと App Store 配布の準備方法
1:01 – New in Background Assets
- Background Assets により、素晴らしい初回起動体験をより簡単に提供
- システムがデバイスでアセットをダウンロードする方法を設定し、メインアプリを更新せずに更新可能
- 使用例:
- 新規ダウンロード後すぐに遊べるよう、ゲームのチュートリアルレベルを提供(ゲームの残りはバックグラウンドでダウンロード)
- In-App Purchase でアンロックするオプションのダウンロード可能コンテンツ(DLC)
- 機械学習モデルの更新(加速された App Store への提出プロセス)
- Asset pack の配信オプション:
- メインアプリバンドルにすべてを含める(4GB 制限、更新時はアプリ全体の再アップロードが必要)
- URLSession
- On-Demand Resources(一部アセット更新時でもアプリ全体の更新が必要、レガシー技術、非推奨予定)
- Background Assets(推奨)
- Managed Background Assets (New):システムが自動的にダウンロード、更新、圧縮などを管理
- Apple-Hosted Background Assets
- Apple Developer Program メンバーシップに 200GB の Apple hosting 容量が含まれる
- 自前のサーバーにアセットをホスティングする必要なし
- Download policies:
- Essential:アプリインストールプロセスに統合され、自動ダウンロード、インストール完了後は使用できる状態
- Prefetch:インストール中に開始し、バックグラウンドで継続する可能性あり
- On-demand:明示的な API 呼び出しでのみダウンロード
- Asset pack の配信方法、バージョン管理について
7:32 – Sample app development
- Asset pack の作成:
- macOS, Linux, Windows 用の新しいパッケージングツールを使用
- マニフェストテンプレートを生成し、JSON ファイルで設定
- カスタム ID、ダウンロードポリシー、サポートするプラットフォームを指定
- Downloader extension の追加:
- Xcode で Background Download テンプレートを選択
- Apple hosting または独自サーバーの選択
- システム提供の完全機能付き downloader extension を使用可能
- カスタムコードなしでアプリに追加可能
- Asset pack の使用:
AssetPackManager.shared.ensureLocalAvailability(of:)でローカル利用可能性を確認contents(at:searchingInAssetPackWithID:options:)でファイルを読み取り- システムが自動的にすべての asset pack を共有名前空間にマージ
- メモリマップされたデータインスタンスを返す(大きなアセットファイルに適している)
- 設定:
- メインアプリと downloader extension を同じ app group に追加
BAAppGroupID,BAHasManagedAssetPacks,BAUsesAppleHostingキーを Info.plist に追加
- ローカルテスト:
- macOS, Linux, Windows 用の Background Assets mock server を使用
- SSL 証明書を発行し、テストデバイスにインストール
ba-serveコマンドで mock server を起動- Development Overrides で mock server のベース URL を設定
17:24 – Beta testing and distribution
- Apple hosting を使用する場合:
- アプリバイナリと asset pack を App Store Connect に個別にアップロード
- TestFlight でテスト、App Store で配布
- Asset pack のアップロード方法:
- Transporter app:ドラッグ&ドロップ UI 体験
- App Store Connect REST APIs:完全な制御と透明性
- iTMSTransporter:簡素化されたコマンドラインインターフェース
- API を使用したアップロード手順:
backgroundAssetsリソースに POST リクエストで asset pack レコードを作成backgroundAssetVersionsリソースに POST リクエストでバージョンレコードを作成backgroundAssetUploadFilesリソースでアーカイブのアップロード予約を作成
- TestFlight でのテスト:
- 内部テスト用に asset pack を提出
- 外部テスト用に別途提出
betaBackgroundAssetReviewSubmissionsリソースで API からも提出可能
- App Store 配布:
- App Review に asset pack バージョンを提出
- アプリバージョンと一緒に提出することも可能
reviewSubmissionsリソースで API からも提出可能
- 状態管理:
- Ready for Internal Testing
- Ready for External Testing
- Ready for Distribution
- Webhook 通知:asset pack バージョンの準備完了時に通知を受信可能