Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问存储在iOS设备上的音乐文件?_Ios_Swift - Fatal编程技术网

如何访问存储在iOS设备上的音乐文件?

如何访问存储在iOS设备上的音乐文件?,ios,swift,Ios,Swift,我的应用程序在查找iOS设备上音乐文件夹中的文件时遇到问题 如果文件作为应用程序数据保存在下面(在我的playpen中),则没有问题。但当我使用以下行查找“音乐”文件夹时: dest_dir = try! FileManager.default.url(for: .musicDirectory, in: .allDomainsMask, appropriateFor: nil, create: false) musicDir = dest_dir if UIApplication.shar

我的应用程序在查找iOS设备上音乐文件夹中的文件时遇到问题

如果文件作为应用程序数据保存在下面(在我的playpen中),则没有问题。但当我使用以下行查找“音乐”文件夹时:

dest_dir = try! FileManager.default.url(for: .musicDirectory, in: .allDomainsMask, appropriateFor: nil,  create: false)

musicDir = dest_dir

if UIApplication.shared.canOpenURL(musicDir) {
    print("found music directory")
}else {
    print("did not find music directory")
}
当代码执行
canOpenURL
时,我收到了权限投诉

我还尝试访问用户目录(以为我可以导航到音乐)


关于应用程序如何访问iOS设备上音乐系统文件夹下的文件和播放列表的任何线索?

出于安全和隐私原因,iOS不允许您直接访问音乐文件夹;您需要在中使用API。假设您正在尝试播放用户库中的内容,请查看;您需要为其提供一些使用检索到的实例,然后从控制器上的调用方法使其播放内容。

出于安全和隐私原因,iOS不允许您直接访问音乐文件夹;您需要在中使用API。假设您正在尝试播放用户库中的内容,请查看;您需要为其提供一些使用检索到的实例,然后从控制器上的调用方法,使其播放内容。

iOS中没有“音乐文件夹”这样的东西。要访问用户的音乐库,请使用媒体播放器框架

示例(假设您已获得用户的必要授权):

iOS中没有“音乐文件夹”这样的东西。要访问用户的音乐库,请使用媒体播放器框架

示例(假设您已获得用户的必要授权):

给你!(Swift 4.2)

按钮方法或@iAction按钮内部

    let mediaItems = MPMediaQuery.songs().items
    let mediaCollection = MPMediaItemCollection(items: mediaItems ?? [])
    let player = MPMusicPlayerController.systemMusicPlayer
    player.setQueue(with: mediaCollection)
    player.play()


    let picker = MPMediaPickerController(mediaTypes: .anyAudio)
    picker.delegate = self
    picker.allowsPickingMultipleItems = false
    picker.prompt = "Choose a song"
    present(picker, animated: true, completion: nil)
给你!(Swift 4.2)

按钮方法或@iAction按钮内部

    let mediaItems = MPMediaQuery.songs().items
    let mediaCollection = MPMediaItemCollection(items: mediaItems ?? [])
    let player = MPMusicPlayerController.systemMusicPlayer
    player.setQueue(with: mediaCollection)
    player.play()


    let picker = MPMediaPickerController(mediaTypes: .anyAudio)
    picker.delegate = self
    picker.allowsPickingMultipleItems = false
    picker.prompt = "Choose a song"
    present(picker, animated: true, completion: nil)

当我在我的模拟器中运行你的代码时,它会记录“找到音乐目录”很好。@Aaron:那是因为模拟器目前没有强制沙箱,这就是J.R.在这里运行的。我想我应该在评论之前彻底阅读这个问题。“playpen”把我甩了。没有“音乐文件夹”这样的东西。要访问用户的音乐库,请使用媒体播放器框架。当我在模拟器中运行您的代码时,它会记录“找到音乐目录”,这很好。@Aaron:这是因为模拟器目前没有强制沙盒,这正是J.R.在这里运行的。我想我应该在评论之前彻底阅读这个问题。“playpen”把我甩了。没有“音乐文件夹”这样的东西。要访问用户的音乐库,请使用媒体播放器框架。感谢应用程序的Info.plist必须包含一个NSAppleMusicUsageDescription键,该键带有一个字符串值,向用户解释应用程序如何使用这些数据。@Matian2049这就是我在回答中所说的“假设您已获得用户的必要授权”的意思。这里有更多示例代码:感谢提示。感谢应用程序的Info.plist必须包含一个NSAppleMusicUsageDescription密钥,该密钥带有一个字符串值,向用户解释应用程序如何使用这些数据。@Matian2049这就是我在回答中所说的“假设您已从用户处获得必要的授权”的意思。感谢您的提示。谢谢你的暗示。谢谢