parent
70abbf9eff
commit
51b617f333
@ -0,0 +1,62 @@ |
|||||||
|
// |
||||||
|
// MediaPickerView.swift |
||||||
|
// LeCountdown |
||||||
|
// |
||||||
|
// Created by Laurent Morvillier on 20/04/2023. |
||||||
|
// |
||||||
|
|
||||||
|
import SwiftUI |
||||||
|
import MediaPlayer |
||||||
|
import AVFoundation |
||||||
|
import AVKit |
||||||
|
|
||||||
|
struct AppleMusicPickerView: UIViewControllerRepresentable { |
||||||
|
|
||||||
|
@Environment(\.presentationMode) var presentationMode |
||||||
|
|
||||||
|
var handler: (MPMediaItemCollection) -> () |
||||||
|
|
||||||
|
init(_ handler: @escaping (MPMediaItemCollection) -> Void) { |
||||||
|
self.handler = handler |
||||||
|
} |
||||||
|
|
||||||
|
class Coordinator: NSObject, UINavigationControllerDelegate, MPMediaPickerControllerDelegate { |
||||||
|
|
||||||
|
var parent: AppleMusicPickerView |
||||||
|
|
||||||
|
var handler: (MPMediaItemCollection) -> () |
||||||
|
|
||||||
|
init(_ parent: AppleMusicPickerView, handler: @escaping (MPMediaItemCollection) -> ()) { |
||||||
|
self.parent = parent |
||||||
|
self.handler = handler |
||||||
|
} |
||||||
|
|
||||||
|
func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) { |
||||||
|
|
||||||
|
self.handler(mediaItemCollection) |
||||||
|
|
||||||
|
mediaPicker.dismiss(animated: true, completion: nil) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func makeCoordinator() -> Coordinator { |
||||||
|
Coordinator(self, handler: self.handler) |
||||||
|
} |
||||||
|
|
||||||
|
func makeUIViewController(context: UIViewControllerRepresentableContext<AppleMusicPickerView>) -> MPMediaPickerController { |
||||||
|
let picker = MPMediaPickerController(mediaTypes: .music) |
||||||
|
picker.delegate = context.coordinator |
||||||
|
picker.allowsPickingMultipleItems = true |
||||||
|
return picker |
||||||
|
} |
||||||
|
|
||||||
|
func updateUIViewController(_ uiViewController: MPMediaPickerController, context: UIViewControllerRepresentableContext<AppleMusicPickerView>) { |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
struct MediaPickerView_Previews: PreviewProvider { |
||||||
|
static var previews: some View { |
||||||
|
AppleMusicPickerView { _ in } |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,9 @@ |
|||||||
|
/* |
||||||
|
InfoPlist.strings |
||||||
|
LeCountdown |
||||||
|
|
||||||
|
Created by Laurent Morvillier on 13/03/2023. |
||||||
|
|
||||||
|
*/ |
||||||
|
"CFBundleDisplayName" = "Enchant"; |
||||||
|
"NSAppleMusicUsageDescription" = "Play music from your Apple Music library to enchant your activities"; |
||||||
Loading…
Reference in new issue