Sabre Red App中如何与外部webapp通信

How to communicate with external webapp in Sabre Red App

我正在开发一个 Sabre Red 应用程序,目的是使用 WebkitView 来展示我们的网络应用程序。我知道 WebkitView 子类可以通过多种方式与作为插件资源本地托管的 HTML/JS 进行通信。但是,在红色应用程序和外部网络应用程序之间交换数据(首选 JSON)的最佳方法是什么?

我调查过的选项:

  1. 创建一个本地 index.html 作为插件资源,在 iframe 中加载网络应用程序,然后转到 WebkitView <-> index.html <-> iFrame/web-application。似乎有点 hack,我不确定 Red Workspace 是否会始终允许 index.html <-> iframe 通信(这不是跨站点吗?)
  2. 使用 WebkitView#executeJavaScript(),但我看不到 Web 应用程序如何发送 JSON 对象返回

谢谢 西蒙

您可以从 Red App 呈现远程 URL,就好像它是浏览器一样。实际的Web App并不都需要绑定Plugin。

或者是打算将所有 HTML/JS 文件与客户端上的插件捆绑在一起。

事实证明,使用扩展点 'com.sabre.edge.platform.optional.webkit.js.handler' 的 Red App 示例有效,但 使用 WebkitView 子类时。子类化 BrowserView,JS 对象存在。

反之,我们决定使用com.sabre.edge.cf.webapp.services.WebViewForwardingService来调用一个JS函数。 (确保包含 'com.sabre.edge.cf.webapp.services' 作为插件依赖项)