sck*_*kor 9 macos itunes objective-c itunes-sdk ituneslibrary
我一直在寻找添加iTunes库访问我正在开发的Mac应用程序.
我查看了一些现有的开源实现,例如EyeTunes和iMedia - 但发现它们并不是我想要的.矫枉过正.
所以我尝试使用Scripting Bridge,发现虽然功能很慢.由于我并不真的需要控制iTunes,因此速度缓慢并不值得.它也有依赖iTunes运行的缺点.让它在沙盒应用程序中工作也有点恼火(虽然可能.)
所以我终于通过阅读iTunes Library.xml文件开始自己动手了.这似乎工作正常.但是在调查Distinguished Kind键/值的意义的过程中我偶然发现了一个全新的,Apple提供了iTunesLibrary.framework !!!
但是,当我尝试使用参考链接中显示的代码初始化框架时:
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框架代码似乎不起作用.除非苹果公司修复它,否则这会成为一个交易破坏者.
您需要使用Mac Developer Program中的证书对您的应用进行协同设计.
它没有记录在任何地方,但是,我怀疑是由于iTunes云是一个需要访问用户帐户的Web服务的东西而增加了这个要求.
// 编辑:除了CODE_SIGN_IDENTITY如上所述设置项目设置外,还需要在项目设置中添加/Library/Frameworks,FRAMEWORK_SEARCH_PATHS以便Xcode知道在哪里查找#imports.
// 编辑2:我写了一个快速的小样本应用程序,以显示如何使用iTunesLibrary,因为Apple的示例代码和文档相当稀疏:https://github.com/zadr/iTunesLibraryExample