9

我一直在考虑将 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];

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

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

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

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

有没有其他人比我更幸运地尝试过这个新的 iTunes 库框架?

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

4

3 回答 3

7

您需要使用来自 Mac Developer Program 的证书对您的应用程序进行代码签名。

它没有在任何地方记录,但是,我怀疑添加此要求是因为 iTunes 云是需要访问用户帐户的 Web 服务。

//编辑:除了CODE_SIGN_IDENTITY上面讨论的项目设置中的设置之外,您还需要添加/Library/FrameworksFRAMEWORK_SEARCH_PATHS项目设置中,以便 Xcode 知道在哪里查找#import。

//编辑 2:我写了一个快速的小示例应用程序来展示如何使用 iTunesLibrary,因为 Apple 的示例代码和文档相当稀疏:https ://github.com/zadr/iTunesLibraryExample

于 2013-05-18T18:02:12.717 回答
4

来自iTunes 库框架参考

  • 您必须对您的应用程序进行代码签名才能从 iTunes 库框架中获取信息。
  • iTunes Library 框架可供运行 iTunes v11.0 或更高版本的用户使用。
于 2013-10-31T10:40:56.430 回答
1

不确定这是否适用于你们所有人,但就我而言,我保留了 Code-Signing-Identity 来-帮助我。现在我不需要签署应用程序。

于 2016-12-14T17:46:57.083 回答