适用于安卓的Phonegap jabber插件
Phonegap jabber plugin for android
对于jabber支持,我使用库Smack。安卓端口。
我有类SmackAPI,它实现了MessageListener接口,并包含连接,登录,发送消息的方法。同时,此类包含方法:
@Override
public void processMessage(Chat chat, Message message) {
String from = message.getFrom();
String body = message.getBody();
System.out.println(String.format("Received message '%1$s' from %2$s", body, from));
this.recievedMessage = message;
}
它由 MessageListener 接口提供。此方法处理的所有新消息。
我写jabber插件来连接,登录,从phonegap发送消息。
我的问题:如何在javascript中监听新消息?
我做到了。我不知道这是正确的方法,但它有效!
科尔多瓦插件类:
public class SmackJabber extends CordovaPlugin {
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
this.cbContext = callbackContext;
switch (action) {
case LISTEN_MESSAGE:
res = new PluginResult(PluginResult.Status.NO_RESULT);
res.setKeepCallback(true);
cordova.getThreadPool().execute(new Runnable() {
@Override
public void run() {
String callbackId = cbContext.getCallbackId();
while (true) {
String msg = getMsg();
if (msg != null) {
res = new PluginResult(PluginResult.Status.OK, msg);
res.setKeepCallback(true);
CallbackContext cb = new CallbackContext(callbackId, webView);
cb.sendPluginResult(res);
}
}
}
});
cbContext.sendPluginResult(res);
break;
和简单的JavaScript。只需调用插件方法:
window.plugins.smackJabber.listenMessage(function(result) {
alert(result)
}, function(error) {
alert(error)
}
);
解释:我调用插件方法"listenMessage"(使用操作"LISTEN_MESSAGE"调用"执行"方法)。在那里,我从可运行的 cordova 线程池启动线程,在可运行中,我得到了检查消息的递归函数。但是在开始可运行之前,我必须获取调用方法执行的方法的回调 ID。此外,对于从方法退出,我创建状态为"NO_RESULT"的新插件结果,并将其选项"keepCallback"设置为 true - 这意味着,javascript 中的方法调用正在等待我的另一个回调结果。当我收到消息时,我根据回调 id 和我的 web 视图创建新的回调上下文,将 setKeepCallback 设置为 true 以获得对插件结果的进一步可能响应,将状态为"OK"的消息放入插件结果并将其发送到回调上下文。就这样。
相关文章:
- 如何在Angular2中使用jQuery插件
- 可以前端maven插件使用节点,npm已经安装
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- TableExport jquery插件:文件名和扩展名问题
- 如何在使用selectBoxIt JQuery插件时检测选项更改
- jQuery插件-从插件中调用公共方法
- 压缩phonegap中ios的图像插件
- jQuery粘性插件可变顶部间距
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 高亮显示与数组字符串一起使用时文本插件中断
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- Wordpress插件根据需要加载js和css
- jQuery Wan Spinner插件的多个字段
- jQuery Facebox插件:关注弹出的外观
- CKEditor v4:自制插件中对话框的动态标题
- Jquery标签插件粘贴问题
- 适用于安卓的Phonegap jabber插件