我正在尝试创建一个允许NativeScript应用程序连接到MQTT服务器的插件 . 当我尝试运行应用程序时,我的应用程序中出现以下错误:
java.lang.RuntimeException:无法启动活动ComponentInfo {org.nativescript.testMQTT / com.tns.NativeScriptActivity}:com.tns.NativeScriptException:调用js方法onCreate失败TypeError:无法读取未定义文件的属性'paho':“ ,line:1,column:265 StackTrace:Frame:function:'NativeScriptMQTTClient',file:'/ data / data / org.nativescript.testMQTT / files / app / tns_modules / nativescript-mqtt / mqtt.js',line:8 ,column:44 Frame:function:'',file:'/ data / data / org.nativescript.testMQTT / files / app / main-page.js',line:4,column:14 Frame:function:'require' ,file:'',line:1,column:266 Frame:function:'global.loadModule',file:'/ data / data / org.nativescript.testMQTT / files / app / tns_modules / globals / globals.js', line:19,column:16 Frame:function:'resolvePageFromEntry',file:'/ data / data / org.nativescript.testMQTT / files / app / tns_modules / ui / frame / frame-common.js',line:72, column:40 Frame:function:'Frame.navigate',file:'/ data / data / org.nativescript.testMQTT / files / app / tns_modules / UI / FR
我在mqtt.android.ts文件中使用以下代码与Paho Java库:
export class NativeScriptMQTTClient {
private _topic: String;
private _content: String;
private _qos: number;
private _broker: String;
private _clientId: String;
private _persistance: org.eclipse.paho.client.mqttv3.persist.MemoryPersistance;
private _client: org.eclipse.paho.client.mqttv3.MqttClient;
private _connectOptions: org.eclipse.paho.client.mqttv3.MqttConnectOptions;
constructor(topic: String, qos: number, broker: string, clientId: String) {
this._topic = topic;
this._qos = qos;
this._broker = broker;
this._clientId = clientId;
this._persistance = new org.eclipse.paho.client.mqttv3.persist.MemoryPersistance();
}
connect() {
this._client = new org.eclipse.paho.client.mqttv3.MqttClient(this._broker, this._clientId, this._persistance);
this._connectOptions = new org.eclipse.paho.client.mqttv3.MqttConnectOptions();
this._connectOptions.setCleanSession(true);
console.log("Connecting to the broker: " + this._broker);
this._client.connect(this._connectOptions);
console.log("Connected to the broker: " + this._broker);
console.log("Publishing message: Hello from NativeScript (Morné)");
this._client.publish(this._topic, "Hello from NativeScript (Morné)");
console.log("Published message: Hello from NativeScript (Morné)");
console.log("Disconnecting from the broker: " + this._broker);
this._client.disconnect();
console.log("Disconnected from the broker: " + this._broker);
}
}
我在main-page.ts文件中有以下代码:
import {NativeScriptMQTTClient} from "nativescript-mqtt";
let client: NativeScriptMQTTClient = new NativeScriptMQTTClient("MQTT Examples", 2, "tcp://iot.eclipse.org:1883", "NativeScriptClient");
client.connect();
任何帮助将不胜感激 .
1 回答
基于MQTT api参考,我注意到以下内容
它的 MemoryPersistence 并且在你的代码中是MemoryPersist a nce
确保已将您的.jar文件包含在platforms / Android / libs中(link to MQTT jar file v1.0.2)
你的package.json应该是这样的(如果你在TypeScript中编码,请确保你有插件中的mqtt.android . js 文件)
你还应该像你这样的插件
此时我正在接受
从那时起,您应该使用正确的 d.ts 文件和逻辑导出connect方法 . 希望信息能帮助您完成项目!