【问题标题】:Creating an Android NativeScript plugin创建一个 Android NativeScript 插件
【发布时间】:2016-04-21 09:30:58
【问题描述】:

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

java.lang.RuntimeException:无法启动活动 组件信息{org.nativescript.testMQTT/com.tns.NativeScriptActivity}: com.tns.NativeScriptException: 调用 js 方法 onCreate 失败

TypeError:无法读取未定义文件的属性“paho”:“, 行:1,列:265

StackTrace: Frame: function:'NativeScriptMQTTClient', 文件:'/data/data/org.nativescript.testMQTT/files/app/tns_modules/nativescript-mqtt/mqtt.js', 行:8,列:44 帧:函数:'', 文件:'/data/data/org.nativescript.testMQTT/files/app/main-page.js', 行:4,列:14 框架:函数:'require',文件:'',行:1, 列:266 帧:函数:'global.loadModule', 文件:'/data/data/org.nativescript.testMQTT/files/app/tns_modules/globals/globals.js', 行:19,列:16 帧:函数:'resolvePageFromEntry', 文件:'/data/data/org.nativescript.testMQTT/files/app/tns_modules/ui/frame/frame-common.js', 行:72,列:40 帧:函数:'Frame.navigate', 文件:'/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(); 

任何帮助将不胜感激。

【问题讨论】:

  • 您是否在插件的platforms/Android/libs 中包含了库jar 文件(org.eclipse.paho.client.mqttv3-1.0.2.jar)

标签: javascript android mqtt nativescript paho


【解决方案1】:

基于 MQTT api 参考我注意到以下内容

它的MemoryPersistence 在您的代码中是 MemoryPersistance

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

确保您已将 .jar 文件包含在平台/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 文件和逻辑导出您的连接方法。希望这些信息对您的项目有所帮助!

【讨论】:

  • 感谢修复它。现在尝试弄清楚如何将其实现到 iOS 部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多