这个项目能做什么

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。