标签: ituneslibrary

使用新的iTunesLibrary Framework访问Mac OS-X上的iTunes库

我一直在寻找添加iTunes库访问我正在开发的Mac应用程序.

我查看了一些现有的开源实现,例如EyeTunesiMedia - 但发现它们并不是我想要的.矫枉过正.

所以我尝试使用Scripting Bridge,发现虽然功能很慢.由于我并不真的需要控制iTunes,因此速度缓慢并不值得.它也有依赖iTunes运行的缺点.让它在沙盒应用程序中工作也有点恼火(虽然可能.)

所以我终于通过阅读iTunes Library.xml文件开始自己动手了.这似乎工作正常.但是在调查Distinguished Kind键/值的意义的过程中我偶然发现了一个全新的,Apple提供了iTunesLibrary.framework !!!

美丽 - iTunesLibrary框架文档在这里.

但是,当我尝试使用参考链接中显示的代码初始化框架时:

NSError * error = nil;
ITLibrary* library = [ITLibrary libraryWithAPIVersion:@"1.0" error:&error];
Run Code Online (Sandbox Code Playgroud)

它返回nil并提供非常有用的错误(在我的Sandboxed应用程序中):

错误域= NSPOSIXErrorDomain代码= 100001"无法加载".UserInfo = 0x1140025b0 {NSLocalizedDescription =无法加载.,NSUnderlyingError = 0x1026fbe20"操作无法完成.(OSStatus error -50.)"}

考虑到它可能是一个沙盒问题,我还创建了一个快速命令行实用程序,它尝试初始化库并返回一个几乎相同的错误:

无法打开库:错误域= NSPOSIXErrorDomain代码= 100001"无法加载".UserInfo = 0x1018015b0 {NSLocalizedDescription =无法加载.,NSUnderlyingError = 0x103a000e0"操作无法完成.(OSStatus错误100005.)"}

有没有其他人尝试过这个新的iTunes图书馆框架,而不是我的运气?

//编辑:下面的答案是正确的.代码签名是必需的.答案中的示例代码是使用框架的便捷起点.此外,在我的情况下,问题还在于当iTunes库托管在网络驱动器上时,iTunesLibrary框架代码似乎不起作用.除非苹果公司修复它,否则这会成为一个交易破坏者.

macos itunes objective-c itunes-sdk ituneslibrary

9
推荐指数
1
解决办法
6545
查看次数

是否可以使用swift将Ipod库中的音乐保存到我的应用程序中?

当用户从iPod库中选择音频时,我会引用MPMediaItem.我通过使用获取该项目的资产URL

 let url = item.valueForProperty(MPMediaItemPropertyAssetURL)
Run Code Online (Sandbox Code Playgroud)

但这并没有给我文件的确切物理位置,相反,它给了我一个URL与iPod库.

ipod-library://item/item.mp3?id=1840064795502796074
Run Code Online (Sandbox Code Playgroud)

有没有办法从iPod库中获取歌曲的物理URL?

编辑 - 实际上我想从物理文件中提取NSData并将其发送到我的后端服务器,所以我需要物理文件URL而不是相对URL

MPmediaPickerController正在工作,我选择了歌曲及其播放,但我不想播放这首歌.我试图将音频文件上传到服务器.我在列表音频中使用MPMedia Picker视图,当我要选择我将上传到服务器(HTTP)的音频时,我该怎么做?如何使用Swift代码访问媒体库?

audio-player ios ituneslibrary swift

5
推荐指数
1
解决办法
1913
查看次数