【问题标题】:How do I add a Webkit plugin to my sandboxed OS X app WebView?如何将 Webkit 插件添加到我的沙盒 OS X 应用程序 WebView?
【发布时间】:2012-11-27 19:18:42
【问题描述】:

我是 OS X 应用程序开发的新手,请耐心等待.....我有一个 OS X 应用程序,它广泛使用 WebView 为用户提供视频会议/屏幕共享功能,该功能依赖于浏览器插件。视频插件在我禁用沙盒时工作,但我们想在 OS X App Store 中分发我们的应用程序,需要让它与沙盒 WebView 一起工作。

我的问题是,如何启用沙盒并让我的沙盒 WebView 包含浏览器插件?我可以将插件与应用程序捆绑在一起并使用包含的插件初始化 WebView 吗? Apple 开发人员文档或互联网上的某处是否有此示例?

【问题讨论】:

  • 谁能帮我解决这个问题或为我指明一个大致的方向?我尝试将 Safari 插件与应用程序捆绑在一起,根据指令here 定位/加载 .plugin 文件,但没有运气。我不确定是否需要简单地加载插件或创建 principalClass 的实例并以某种方式将其应用于 WebView。在这里迷路了,希望有任何潜在的帮助。
  • 我们最近一直在玩一些 Web 功能,发现在沙盒中很难工作;因为 Web 的东西现在不是这里的优先事项,所以我不能说我有适合你的解决方案。但是我很想知道您所依赖的插件是做什么的。 (它是自定义插件吗?开源?)是否有解决问题的设计方法?当 Xcode 不为您设置沙箱时,您会遇到什么错误?

标签: cocoa webview osx-mountain-lion browser-plugin appstore-sandbox


【解决方案1】:

简单的答案:以 32 位运行。

更长的答案:在 10.7 上,您可以在沙箱中加载捆绑插件(从捆绑的 Content/Plugins 文件夹中),前提是您为 com.apple.WebKit.PluginAgent 添加了一个临时的 mach-lookup 异常,这适用于 32 - 和 64 位二进制文​​件。在 10.8 上,当以 64 位运行时,插件报告为可用,但永远不会加载,并且没有任何内容记录到控制台以指示原因(或任何错误)。据推测,插件代理缺少启动插件进程的沙盒权限,并且静默失败。当以 32 位运行时,插件在主机应用程序沙箱权利下在进程内运行。

我在 2012 年 7 月提交了 Apple 错误 #11900695 以报告此问题,请求使其工作,或报告插件不可用并记录一些内容。此时它仍然处于打开状态。

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    相关资源
    最近更新 更多