【发布时间】:2013-05-11 22:15:56
【问题描述】:
我一直在考虑将 iTunes 库访问权限添加到我正在开发的 Mac 应用程序中。
我查看了一些现有的开源实现,例如 EyeTunes 和 iMedia - 但发现它们并不是我想要的。总体来说是矫枉过正。
所以我尝试使用Scripting Bridge,发现虽然可以正常运行,但速度很慢。而且由于我真的不需要控制 iTunes,所以运行缓慢是不值得的。它也有依赖 iTunes 运行的缺点。让它在沙盒应用程序中工作也有点烦人(尽管可能。)
所以我终于通过阅读 iTunes Library.xml 文件开始自己动手了。这似乎工作正常。但是在调查 Distinguished Kind 键/值含义的过程中,我偶然发现了一个全新的 Apple 提供的 iTunesLibrary.framework !!!
美丽-the iTunesLibrary framework docs are here.
但是,当我尝试使用参考链接中显示的代码初始化框架时:
NSError * error = nil;
ITLibrary* library = [ITLibrary libraryWithAPIVersion:@"1.0" error:&error];
它返回 nil 并提供非常有用的错误(在我的沙盒应用中):
错误域=NSPOSIXErrorDomain 代码=100001 “无法加载。” UserInfo=0x1140025b0 {NSLocalizedDescription=无法加载。, NSUnderlyingError=0x1026fbe20 "操作无法完成。 (OSStatus 错误 -50。)"}
认为这可能是沙盒问题,我还创建了一个快速命令行实用程序,尝试初始化库并返回几乎相同的错误:
无法打开库:错误域=NSPOSIXErrorDomain 代码=100001 “不能加载。” UserInfo=0x1018015b0 {NSLocalizedDescription=可以 未加载。, NSUnderlyingError=0x103a000e0 "无法执行该操作 完全的。 (OSStatus 错误 100005。)"}
有没有其他人比我更幸运地试用了这个新的 iTunes 库框架?
// 编辑: 下面的答案是正确的。需要代码签名。答案中的示例代码是使用该框架的便捷起点。此外,在我的情况下,问题还在于当 iTunes 库托管在网络驱动器上时,iTunesLibrary 框架代码似乎不起作用。除非 Apple 修复它,否则这会成为一个交易破坏者。
【问题讨论】:
-
我在未沙盒化的代码中遇到了完全相同的错误,但不知道如何修复它。我在导入框架时也遇到了一些麻烦。我终于通过将框架复制并粘贴到我的项目目录中并将其添加到项目中来让它工作。我想知道它是如何知道在哪里寻找 iTunes 资料库的。
-
我打算试试这个来学习一些objective-c,但我什至无法将它正确地添加到我的项目中。猜测与 abroekhof 相同的问题...它添加到项目中,但我无法导入标题(未找到)。我见过其他人使用脚本桥。这可能是要走的路吗?您是如何将其添加到您的项目中的?
-
abroekhof - 您是否能够通过将框架直接复制到您的项目中来使库在代码签名的应用程序中成功初始化?
-
@sckor 是的,这很糟糕吗?我实际上刚刚升级到 Mountain Lion,现在我的应用程序不再工作了。多么拖沓。我也收到了无法加载错误。
-
我确实向 Apple 提交了错误报告。他们几乎立即回应他们无法复制。我向他们提供了有关我的设置的更多详细信息,从那时起就没有收到任何回复。所以我只是继续我最初的直接访问 iTunes Library.xml 的计划,暂时忘记了新的框架。很遗憾听到您现在在使用框架时遇到问题。 :( 我建议提交一份错误报告,以便他们知道框架存在问题需要解决。
标签: objective-c macos itunes itunes-sdk ituneslibrary