Cordova:如何将操作从webview页面传递到Cordova框架(和本机)



在我们公司,我们使用Outsystems作为开发平台。Outsystems提供了一个Outsystems Now原生应用程序,该应用程序的功能就像浏览器,具有设备的原生功能。

我们只在网络服务器上开发网页。我们有Outsystems Now应用程序的源代码,所以我们可以编辑框架。

多亏了源代码,我看到它使用了Cordova/Phonegap作为接口。

我想创建的是网页上的操作,这些操作会触发Outsystems Now(Cordova/Phonegap)应用程序中的操作。例如,页面上的注销按钮关闭会话,但Cordova网络视图不知道。

有人使用Cordova/Phonegap来创建这样的动作吗?

正如您所说,OutSystems Now基于Cordova,因此您可以轻松地为其创建插件,这在整个互联网上都有很好的记录。。为了得到这个答案,假设我创建了一个名为LogoutPlugin的插件,可用的方法是logout

至于网络应用程序和OutSystemsNow应用程序之间的通信,您可以尝试以下操作:

  • 从forge安装OutSystems Now-需要将OutSystems Now移动应用程序连接到您的环境
  • Install Now Plugin common from forge-需要从OutSystems Now应用程序加载cordova javascript文件

现在您可以:

  1. 在Service Studio和您的应用程序中,添加对"Now Plugin common"的引用
  2. 添加对HTTPRequestHandler/RunJavaScript的引用
  3. 创建一个web块,并将来自Now Plugin commons的NativePluginLoader和一个按钮拖到其中。
    • 将按钮方法更改为ajax提交并创建一个新的Screen Action,我称之为"注销"
  4. 打开"注销"屏幕操作并拖动RunJavaScript操作。这将是我们调用所需的cordova插件的地方!既然,在这个答案的开头,我说我创建了LogoutPlugin,我们就这样称呼它:

    cordova.exec(function(){console.log("success");}, function(e){console.log("fail" + e);}, "LogoutPlugin", "logOut", []);

在原生端,例如对于Android,插件类看起来如下所示:

public class LogoutPlugin extends CordovaPlugin {
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
        if (action.equals("logout"))
            logout();
        return true;
    }
    private void logout() {
        cordova.getActivity().finish();
    }   
}

注意:只有当您在OutSystems Now中运行网络应用程序时,cordova才可用,否则NativePluginLoader将无法从设备加载cordova.js文件。

为了进一步学习,你可以看看OutSystems github repos,在那里你可以找到一些OutSystems Now的插件。。

希望这能让你继续前进,这里有一个oml作为

的例子

最新更新