我一直在考虑在我正在开发的一个Mac应用程序中添加iTunes库访问。
我查看了一些现有的开源实现,比如EyeTunes和iMedia,但发现它们与我所寻找的不太一样。一般情况下都是过度杀戮。
因此,我尝试使用脚本桥,并发现,虽然功能,它是缓慢的。而且,由于我并不真的需要控制iTunes,所以速度慢是不值得的。它还存在依赖iTunes运行的缺点。让它在沙箱应用程序中工作也有点烦人(尽管可能)。
因此,我终于开始通过读取iTunes Library.xml文件来滚动自己的文件。那似乎还不错。但是在我无意中发现了一个全新的,苹果提供了iTunesLibrary.framework!
但是,当我尝试使用引用链接中所示的代码初始化框架时:
NSError * error = nil;
ITLibrary* library = [ITLibrary libraryWithAPIVersion:@"1.0" error:&error];它返回0,并提供了非常有用的错误,如(在我的沙箱应用程序中):
“错误Domain=NSPOSIXErrorDomain Code=100001”无法加载。UserInfo=0x1140025b0 {NSLocalizedDescription=Could not load.,NSUnderlyingError=0x1026fbe20“操作无法完成。(OSStatus error -50.)"}
考虑到这可能是一个沙箱问题,我还创建了一个快速命令行实用程序,它试图插入库并返回一个几乎相同的错误:
未能打开库:错误Domain=NSPOSIXErrorDomain Code=100001“无法加载”。UserInfo=0x1018015b0 {NSLocalizedDescription=Could not load.,NSUnderlyingError=0x103a000e0“操作无法完成。(OSStatus错误100005.)"}
有没有人比我更幸运地尝试过这个新的iTunes库框架?
//编辑:下面的答案是正确的。需要进行代码签名。答案中的示例代码是使用框架的一个方便的起点。此外,在我的例子中,问题还在于当iTunesLibrary库托管在网络驱动器上时,iTunes框架代码似乎无法工作。除非苹果公司把它修好,否则就让它成为一个交易的破坏者。
发布于 2013-05-18 18:02:12
您需要使用来自Mac程序的证书协同设计您的应用程序。
它在任何地方都没有文档记录,但我怀疑这是因为iTunes云是一个需要访问用户帐户的web服务。
// 编辑:除了如上所述在项目设置中设置CODE_SIGN_IDENTITY之外,您还需要在项目设置中将/Library/Frameworks添加到FRAMEWORK_SEARCH_PATHS中,以便Xcode知道在哪里查找导入。
// 编辑2:我编写了一个快速的示例应用程序来展示iTunesLibrary是如何使用的,因为苹果的示例代码和文档非常稀少:https://github.com/zadr/iTunesLibraryExample
发布于 2013-10-31 10:40:56
发布于 2016-12-14 17:46:57
不确定这是否对你们所有人都是正确的,但在我的例子中,我保留了-的代码签名-身份帮助我。现在我不需要在应用程序上签名了。
https://stackoverflow.com/questions/16597284
复制相似问题