如何使用Swift 3 iOS10为使用MPMediaPickerControllerDelegate的View Controller呈现音乐库?
我正在尝试关注使用MPMediaPickerControllerDelegate
呈现音乐选择列表的最新帖子。如何使用Swift 3 iOS10为使用MPMediaPickerControllerDelegate的View Controller呈现音乐库?
http://www.justindoan.com/tutorials/
我使用这个代码:
import UIKit
import MediaPlayer
class ViewController: UIViewController, MPMediaPickerControllerDelegate {
var mediapicker1: MPMediaPickerController!
override func viewDidLoad() {
super.viewDidLoad()
let mediaPicker: MPMediaPickerController = MPMediaPickerController.self(mediaTypes:MPMediaType.music)
mediaPicker.allowsPickingMultipleItems = false
mediapicker1 = mediaPicker
mediaPicker.delegate = self
self.presentViewController(mediapicker1, animated: true, completion: nil)
}
}
不过,我发现,:
self.presentViewController(mediapicker1, animated: true, completion: nil)
不
本教程在这个网址找到工作。不幸的是,斯威夫特3所建议的自动化解决方案不起作用或者:
self.present(mediapicker1, animated: true, completion: nil)
此外,iOS的10 Beta版发行说明,在发现:
https://www.scribd.com/doc/315770725/IOS-10-Beta-Release-Notes
说18 10的页面上,
MPMediaPickerController对象可能无法正常显示。
我花了很多时间寻找解决这个问题,我自己没有成功。
有什么建议吗?
经过的步骤:
- 增加 'NSAppleMusicUsageDescription' 到您的Info.plist的隐私权限。
- 确保您的iPhone音乐应用程序可用。它不会在模拟器中工作。
问题中的代码正确运行时,plist键'NSAppleMusicUsageDescription'不是必需的。 – JAL
@JAL在新的iOS10中,它会出现一个空白的视图。经过iPhone6 Plus,iOS10测试。 –
这个答案是正确的。在info.plist中添加NSAppleMusicUsageDescription确实允许MPMediaPickerDelegate显示音乐列表。它会带来一个隐私 - 媒体库使用类型:字符串,值:是的。 –
根据我们对评论的讨论,我最近在我的最新应用named playmates中使用了MPMediaPickerController
。我正在与你分享工作代码。我写了不言自明的代码。
import MediaPlayer
class viewControllerName: UIViewController,MPMediaPickerControllerDelegate {
//Below is Inaction for picking music from media library
@IBAction func btnMediaPickerAction(_ sender: UIButton) {
let mediaPicker: MPMediaPickerController = MPMediaPickerController.self(mediaTypes:MPMediaType.music)
mediaPicker.delegate = self
mediaPicker.allowsPickingMultipleItems = false
self.present(mediaPicker, animated: true, completion: nil)
}
// MPMediaPickerController Delegate methods
func mediaPickerDidCancel(_ mediaPicker: MPMediaPickerController) {
self.dismiss(animated: true, completion: nil)
}
func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) {
self.dismiss(animated: true, completion: nil)
print("you picked: \(mediaItemCollection)")//This is the picked media item.
// If you allow picking multiple media, then mediaItemCollection.items will return array of picked media items(MPMediaItem)
}
}
我发现下面discripencies在你的代码:
- 使用
self.present
没有self.presentViewController
- 无需创建
mediaPicker
全局实例。在代表方法中,您将获得MPMediaPickerController
的实例
这仍然不允许我在iOS10中选择一首像它用来允许的歌曲(带来一个可供选择的歌曲列表)。除非我错误地按照你的指示。 –
将'NSAppleMusicUsageDescription'添加到Info.plist中。 – pkc456
您的链接是测试版文档的镜像。您应该始终使用Apple的官方文档。 iOS 10已经发布并且没有测试版。 – JAL
@George Lee,我最近在[appstore]上发布了一个应用程序(https://itunes.apple.com/in/app/playmates./id1156484061?mt=8),该应用程序为MPMediaPickerControllerDelegate提供了带有视图控制器的音乐库使用Swift 3.检查你是否有相同的需求,然后我可以帮你详细(代码也是如此) – pkc456
@ pkc456那会很好。你能分享这篇文章的代码吗? –