我正在为我的本地Mac App开发Safari扩展程序,我想使用SafariExtension Companion在它们之间进行通信。
但是,在我的扩展的Global.html中,每当我尝试获取safari.extension.companion时,它始终为null。我是否设置了错误的扩展程序?
此外,根据指南,我可以使用safari.extension.addEventListener来监听来自本地app的消息,但是,当我调试扩展时,它会提示我safari.extension.addEventListener是未定义的,为什么会这样? / p>
答:safari.application.addEventListener是正确的,Apple写错文档。
我根据指南在Extension Builder中设置了精确的Companion Bundle Identifier作为我在Xcode中为safari伴侣设置的标识符。还有什么我想念的吗?请帮忙!!!
答案 0 :(得分:5)
Safari扩展随播广告是一种MacOS X应用扩展程序。这些是作为应用程序包的一部分提供的。安装应用程序(将软件包复制到应用程序)后,Safari会选择扩展程序。
首先,您需要一个目标类型为“Cocoa application”的Xcode项目(“命令行工具”不会这样做)。然后,您需要创建“Safari Extension Companion”类型的目标,并且您有机会在创建主应用程序时指定它。
在构建和归档应用程序并导出存档时,您可以选择将扩展程序添加到应用程序包中。然后安装应用包。
确保扩展程序包的ID与Safari Extension Builder中的设置相匹配。此外,请确保应用程序和Safari扩展程序都已签名,并且密钥具有匹配的开发者ID。对于MacOS X上的证书类型,请选择“开发者ID” - 首先在请求时,然后从构建存档中导出捆绑包时。
编辑:当本机伴侣崩溃时,Safari会悄悄地禁用它。如果您删除并重新安装应用程序包,并重新启动Safari,它会再次喜欢该同伴。