Sobre o projeto
MediaBridge é uma ponte Swift para integração com MPMediaLibrary, distribuída como um Swift Package. Tem como alvo iOS 15.0+ e visionOS 1.0+, e requer Swift 6.0 / Xcode 16 ou posterior; a CI compila com Swift 6.0 e executa testes em Swift 6.1 até 6.4.
O pacote envolve o framework MediaPlayer da Apple com uma camada de serviço de nível superior. Um tipo MusicLibrary expõe métodos assíncronos para buscar músicas, álbuns, artistas, playlists, gêneros, compositores, compilações, podcasts e audiolivros, além de seções de índice A–Z via songSections(). Uma sequência assíncrona changes permite que os chamadores busquem novamente quando a biblioteca muda.
Um construtor de consultas por key-path suporta modelos tipados: as consultas podem filtrar (por exemplo, em isCloudItem), ordenar por key paths como playCount ou releaseDate, e limitar resultados. O README observa uma conformidade retroativa pública Optional: Comparable onde Wrapped: Comparable para que key paths opcionais possam ser ordenados, e alerta que uma conformidade conflitante de outra dependência precisaria de desambiguação.
O gerenciamento de playlists está incluído: os chamadores podem buscar uma playlist por id ou criar uma a partir de PlaylistMetadata, e então adicionar itens buscados a ela. No iOS, um modificador SwiftUI mediaPicker apresenta o seletor do sistema e retorna as músicas selecionadas.
Para SwiftUI, a biblioteca pode ser injetada através do ambiente; exemplos mostram a ordenação de músicas por skip count, álbuns por track count, e a filtragem de músicas por gênero com um tipo de comparação. A camada de serviço e o gerenciador de autorização usam por padrão implementações de produção (.live), com implementações personalizadas possíveis para testes ou comportamento especializado. A autorização pode ser solicitada explicitamente, e as buscas solicitam acesso por conta própria; o README enfatiza que NSAppleMusicUsageDescription deve estar presente no Info.plist ou o iOS encerra o app no primeiro acesso à biblioteca.
A instalação é via Swift Package Manager com um requisito de versão a partir de 0.14.0. O README documenta notas de migração para 0.11.0 (o protocolo de serviço foi reduzido para items(_:) e collections(_:) recebendo um MediaQueryRequest; previews são instâncias de MusicLibrary via .preview(...); previews negados agora lançam erro) e 0.7.0 (o predicado albumArtistID recebe UInt64; fetchSongs, fetchSong e fetch não são mais requisitos de protocolo, mas permanecem como métodos de extensão obsoletos). A documentação está hospedada no Swift Package Index, e o projeto é licenciado sob MIT com diretrizes de contribuição em CONTRIBUTING.md.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.