このプロジェクトについて

MediaBridgeは、MPMediaLibrary統合のためのSwiftブリッジであり、Swift Packageとして配布されています。iOS 15.0以降とvisionOS 1.0以降を対象とし、Swift 6.0 / Xcode 16以降が必要です。CIはSwift 6.0でビルドし、Swift 6.1から6.4でテストを実行します。 このパッケージはAppleのMediaPlayerフレームワークを高レベルのサービスレイヤーでラップします。MusicLibrary型は、曲、アルバム、アーティスト、プレイリスト、ジャンル、作曲家、コンピレーション、ポッドキャスト、オーディオブックを取得するための非同期メソッドを公開し、さらにsongSections()によるA–Zインデックスセクションも提供します。changes非同期シーケンスにより、呼び出し側はライブラリの変更時に再取得できます。 キーパスクエリビルダーは型付きモデルをサポートします。クエリはフィルタリング(例えばisCloudItemで)、playCountやreleaseDateなどのキーパスによるソート、結果の制限が可能です。READMEは、オプショナルなキーパスをソートできるようにするための公開レトロアクティブ準拠Optional: Comparable where Wrapped: Comparableに言及し、別の依存関係からの競合する準拠がある場合は曖昧さ回避が必要になると警告しています。 プレイリスト管理も含まれます。呼び出し側はidでプレイリストを取得するか、PlaylistMetadataから作成し、取得した項目を追加できます。iOSでは、mediaPicker SwiftUIモディファイアがシステムピッカーを表示し、選択された曲を返します。 SwiftUI向けに、このライブラリは環境を通じて注入できます。例では、曲をスキップ回数でソートし、アルバムをトラック数でソートし、比較型を用いてジャンルで曲をフィルタリングする方法を示しています。サービスレイヤーと認可マネージャーはデフォルトで本番(.live)実装を使用し、テストや特殊な動作のためにカスタム実装も可能です。認可は明示的に要求でき、取得処理は自らアクセスを要求します。READMEは、Info.plistにNSAppleMusicUsageDescriptionが存在しない場合、iOSは最初のライブラリへのアクセス時にアプリを終了させると強調しています。 インストールはSwift Package Manager経由で、バージョン要件は0.14.0から始まります。READMEは0.11.0の移行ノート(サービスプロトコルがMediaQueryRequestを取るitems(_:)とcollections(_:)に縮小、プレビューは.preview(...)によるMusicLibraryインスタンス、拒否されたプレビューは例外を投げるよう変更)と0.7.0の移行ノート(albumArtistID述語がUInt64を取る、fetchSongs、fetchSong、fetchはプロトコル要件ではなくなったが非推奨の拡張メソッドとして残る)を文書化しています。ドキュメントはSwift Package Indexでホストされ、プロジェクトはMITライセンスで、CONTRIBUTING.mdにコントリビューションガイドラインがあります。