我在java中有一个cordova插件(消息broker-mqtt)。从html中,我通过javascript界面调用此插件,如下所示:
function heartbeat() {
MqttPlugin.heartbeat({topic: "$EDC/tum/B8:27:EB:A6:A9:8A/HEARTBEAT-V1/mqtt/heartbeat"});
}
以下是我的javascript界面中的部分:
MqttPlugin.prototype.heartbeat = function(aString){
console.log("MqttPlugin.js: subscribe");
exec(
function(result){ /*alert("Mqtt Subscribe got the value" + result)*/ },
function(result){ /*alert("Error" + reply);*/ },
"MqttPlugin",
"heartbeat",
[aString.topic]);
};
以下是我的java文件:
public boolean execute(String action, JSONArray args,
CallbackContext callbackContext) throws JSONException {
Log.d("Kura-MQTT", String.valueOf(status));
if (android.os.Build.VERSION.SDK_INT >= 11) {
final StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
if (action.equals("subscribe")) {
this.setOpts(args);
Log.d("Topic in subscribe", args.get(0).toString());
//subscribe();
this.cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
subscribe();
}
});
this.pluginCallbackContext = callbackContext;
Log.d("callbackcontext", pluginCallbackContext.toString());
return true;
}
基本上,java函数subscribe在修复间隔中不断获取一些消息。我想将此消息发送到我的HTML。我浏览了cordova android文档,但这没有帮助。
答案 0 :(得分:0)
更改
MqttPlugin.heartbeat({topic: "$EDC/tum/B8:27:EB:A6:A9:8A/HEARTBEAT-V1/mqtt/heartbeat"});
到
MqttPlugin.heartbeat({topic: "$EDC/tum/B8:27:EB:A6:A9:8A/HEARTBEAT-V1/mqtt/heartbeat"},successCallback,errorCallback);
如果需要,您可以选择参数的顺序
然后改变
MqttPlugin.prototype.heartbeat = function(aString){
console.log("MqttPlugin.js: subscribe");
exec(
function(result){ /*alert("Mqtt Subscribe got the value" + result)*/ },
function(result){ /*alert("Error" + reply);*/ },
"MqttPlugin",
"heartbeat",
[aString.topic]);
};
到
MqttPlugin.prototype.heartbeat = function(aString,success,error){
console.log("MqttPlugin.js: subscribe");
exec(
success,
error,
"MqttPlugin",
"heartbeat",
[aString.topic]);
};
最后,创建一个successCallback
函数
function successCallback(result){
alert("Mqtt Subscribe got the value" + result);
}