我正在为Google Chrome创建一个可以启动和扩展的扩展程序。停止在iTunes(本机应用程序)中播放,获取其媒体库等信息。操作在Mac OS X 10.9.3 Mavericks中进行。
我已经找到了Chrome Runtime API,它有一些原生方法:
chrome.runtime.sendNativeMessage(.., .., ..)
chrome.runtime.connectNative(.., ..)
developer.chrome.com描述了它们。它们允许向本机应用程序发送某种“消息”。我已成功为iTunes创建了本机消息传递主机。首先我的尝试是connectNative()
,但iTunes立即断开连接。然后我发了一条随机消息(我在后台页面中发送):
chrome.runtime.sendNativeMessage(
host,
{text: "foo bar"},
function(response){
console.log(response);
// > Undefined
console.log(chrome.runtime.lastError.message);
// > "Native host has exited."
});
所以现在我遇到了两个问题:
一般来说,我需要能够在媒体库中执行搜索,开始播放某首歌曲,打开某个流 - 所有这些都是由不同的用户操作引发的。基本上,我可以创建辅助cocoa应用程序作为此扩展程序和iTunes之间的一个门,它可以完美地完成iTunes的所有混乱,但我很确定它是一种过度杀伤力,并且存在一些方法来完成扩展内的所有操作。 / p>
答案 0 :(得分:1)
本机消息传递要求本机可执行文件支持Chrome本机消息传递。具体做法是:
Chrome会在单独的进程中启动每个本机消息传递主机 使用标准输入(stdin)和标准输出与它通信 (标准输出)。相同的格式用于在两个方向上发送消息: 每个消息都使用JSON,UTF-8编码并序列化 以原生字节顺序的32位消息长度。
对该主题进行了零研究后,我仍然确信iTunes不是为支持Chrome原生消息而编写的(这就是为什么它“立即断开连接”,因为它不知道你想要做什么),并且由于您没有iTunes的来源,您将无法更改它。
如果您知道如何使用您编写的其他本机可执行文件来操作iTunes,那么您可以教那个可执行文件来讨论Chrome本机消息,从而充当翻译您自己的桥梁iTunes动作的音乐协议。
答案 1 :(得分:0)
我做了一些研究,并从一年前读到这篇文章,谈论从chrome使用iTunes的可能性。
其次,从那里引用:Chrome媒体画廊API
我认为API足以查找曲目。这不是与iTunes交互的方式,而是从库中访问您的数据。不确定您是否可以通过浏览器与iTunes软件进行通信(尽管有趣的想法)。