代号一 - 如何创建 webview 与原生通信 (iOS)
Codename One - how to create webview communicate with native (iOS)
我正在创建一个 UI 必须在 html/reactjs 中且业务逻辑必须在 Java 中的移动应用程序。 Codename One 是不错的选择,但它的 UI 与 Swing 类似,所以我在想我可以将本地 html 加载到 webview 上并让它与 Codename 中的本机代码 (Java) 通信吗一个?
我找到了这个 API BrowserComponent,我打算在浏览器 window 对象中附加 RESTful 请求和响应,并使用它通过 BrowserComponent 进行通信API.
从本机代码(Java)在webview中执行Java脚本,我发现这个API,但是从webview执行本机代码(Java),有办法吗?
您使用导航侦听器,然后导航到众所周知的 URI,然后您可以将其映射到您想要的内容。参见 addBrowserNavigationCallback。有了它,您可以在回调中编写代码,例如:
bc.addBrowserNavigationCallback(url -> {
switch(url) {
case "method1://invoke":
callSerially(() -> method1());
return false;
case "method2://invoke":
callSerially(() -> method2());
return false;
}
return true;
});
您可以在调用中传递参数,这将使这段代码更复杂,但要点是相同的。
请注意,callSerially
在这里是必不可少的,因为此方法会公开浏览器导航线程并阻止它。你不应该抓住那个话题。
我正在创建一个 UI 必须在 html/reactjs 中且业务逻辑必须在 Java 中的移动应用程序。 Codename One 是不错的选择,但它的 UI 与 Swing 类似,所以我在想我可以将本地 html 加载到 webview 上并让它与 Codename 中的本机代码 (Java) 通信吗一个?
我找到了这个 API BrowserComponent,我打算在浏览器 window 对象中附加 RESTful 请求和响应,并使用它通过 BrowserComponent 进行通信API.
从本机代码(Java)在webview中执行Java脚本,我发现这个API,但是从webview执行本机代码(Java),有办法吗?
您使用导航侦听器,然后导航到众所周知的 URI,然后您可以将其映射到您想要的内容。参见 addBrowserNavigationCallback。有了它,您可以在回调中编写代码,例如:
bc.addBrowserNavigationCallback(url -> {
switch(url) {
case "method1://invoke":
callSerially(() -> method1());
return false;
case "method2://invoke":
callSerially(() -> method2());
return false;
}
return true;
});
您可以在调用中传递参数,这将使这段代码更复杂,但要点是相同的。
请注意,callSerially
在这里是必不可少的,因为此方法会公开浏览器导航线程并阻止它。你不应该抓住那个话题。