gpt4 book ai didi

javascript - 创建 Android NativeScript 插件

转载 作者:行者123 更新时间:2023-12-03 07:07:17 24 4
gpt4 key购买 nike

我正在尝试创建一个插件,允许 NativeScript 应用程序连接到 MQTT 服务器。当我尝试运行该应用程序时,我的应用程序中出现以下错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{org.nativescript.testMQTT/com.tns.NativeScriptActivity}: com.tns.NativeScriptException: Calling js method onCreate failed

TypeError: Cannot read property 'paho' of undefined File: ", 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();

任何帮助将不胜感激。

最佳答案

根据 MQTT api 引用,我注意到以下内容

内存持久性在您的代码中是 MemoryPersistance

this._persistance = new org.eclipse.paho.client.mqttv3.persist.MemoryPersistence();

确保您已将 .jar 文件包含在platforms/Android/libs中(link to MQTT jar file v1.0.2)

你的 package.json 应该是这样的(如果您使用 TypeScript 进行编码,请确保插件中已转译 mqtt.android.js 文件)

{
"name": "nativescript-mqtt",
"version": "0.0.3",
"main": "mqtt.js",
"nativescript": {
"platforms": {
"tns-android": {
"version": "1.7.1"
},
"tns-ios": {
"version": "1.7.0"
}
}
}
}

您还应该引用您的插件,例如

var mqttModule = require("nativescript-mqtt");

let client = new mqttModule.NativeScriptMQTTClient("MQTT Examples", 2, "tcp://test.mosquitto.org:1883", "NativeScriptClient");

此时我正在接收

JS: Connecting to the broker: tcp://test.mosquitto.org:1883

从那时起,您应该使用正确的 d.ts 文件和逻辑导出连接方法。希望这些信息对您的项目有所帮助!

关于javascript - 创建 Android NativeScript 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36765454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com