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
Replies
Boosts
Views
Activity
Same issue using only https://appstoreconnect.apple.com/trends/ and it's still blank except for the heading
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.
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.