0

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

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

感谢源代码,我看到它使用 Cordova/Phonegap 作为接口。

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

任何人都有使用 Cordova/Phonegap 来创建此类操作的经验?

4

1 回答 1

2

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

至于 webapp 和 OutSystems Now 应用程序之间的通信,你可以尝试以下方法:

  • 从 Forge 安装 OutSystems Now - 需要将 OutSystems Now 移动应用程序连接到您的环境。
  • 来自 forge 的 Install Now 插件通用 - 需要从 OutSystems Now 应用程序加载 cordova javascript 文件。

现在你可以:

  1. 在 Service Studio 和您的应用程序中,添加对“Now Plugin common
  2. 添加对 HTTPRequestHandler/RunJavaScript 的引用
  3. 创建一个 webblock 并将来自 Now Plugin commons 的 NativePluginLoader 和一个按钮拖入其中。
    • 将按钮方法更改为ajax提交并创建一个新的屏幕操作,我称之为“注销”
  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();
    }   
}

注意:cordova仅当您在 OutSystems Now 中运行 webapp 时才可用,否则NativePluginLoader将无法从设备加载 cordova.js 文件。

为了进一步学习,您可以查看 OutSystems github repos,您可以在其中找到一些 OutSystems Now 的插件。

希望这会让你继续前进,而且,这里有一个 oml 作为例子

于 2016-01-06T12:07:25.363 回答