在我们公司,我们使用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文件
现在您可以:
- 在Service Studio和您的应用程序中,添加对"Now Plugin common"的引用
- 添加对HTTPRequestHandler/RunJavaScript的引用
- 创建一个web块,并将来自Now Plugin commons的NativePluginLoader和一个按钮拖到其中。
- 将按钮方法更改为ajax提交并创建一个新的Screen Action,我称之为"注销"
-
打开"注销"屏幕操作并拖动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作为