Posts

Post not yet marked as solved
6 Replies
Here's a code example, will print the error on iOS 17, but print success and start playing audio on iOS 16: import SwiftUI import MediaPlayer import AVFoundation var player: AVAudioPlayer? struct ContentView: View { @State var success = "" var body: some View { VStack { Text(success) } .padding() .onAppear { MPMediaLibrary.requestAuthorization { (status) in if status == .authorized { print("Access granted") let songs = MPMediaQuery.songs() let playableSong = songs.items?.filter { song in song.assetURL != nil && !song.hasProtectedAsset && song.assetURL!.absoluteString.contains("m4a") }.first if let playableSong { do { let file = try AVAudioFile(forReading: playableSong.assetURL!) player = try? AVAudioPlayer(contentsOf: playableSong.assetURL!) player?.play() success = "success" } catch { print(error) success = error.localizedDescription } } } } } } }
Post not yet marked as solved
24 Replies
I would like to add my criticism of this abrupt change. There was no indication in the documentation that playbackRate should only be applied to content owned by the user, and no warning about this massive change. It is not fair to developers who have built apps around this feature and users who have paid for apps relying on this feature.
Post not yet marked as solved
8 Replies
This question really needs an official answer. Are apps like this acceptable? Apps that are not free in the App Store and play music with MusicKit. Apps that display a banner ad while songs from MusicKit are playing.