2016-04-21 15 views
0

Ich versuche ein Plugin zu erstellen, das es einer NativeScript-Anwendung ermöglicht, sich mit einem MQTT-Server zu verbinden. Wenn ich versuche, die Anwendung bekomme ich folgende Fehler in meiner Anwendung auszuführen:Erstellen eines Android NativeScript-Plugins

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

ich mit der Paho Java-Bibliothek des folgenden Code bin mit meiner mqtt.android.ts Datei:

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); 
    } 
} 

Und ich habe den folgenden Code in meiner Haupt-page.ts Datei:

import {NativeScriptMQTTClient} from "nativescript-mqtt"; 

let client: NativeScriptMQTTClient = new NativeScriptMQTTClient("MQTT Examples", 2, "tcp://iot.eclipse.org:1883", "NativeScriptClient"); 
client.connect(); 

Jede Hilfe wäre sehr dankbar.

+0

Haben Sie die Bibliothek Jar-Datei (org.eclipse.paho.client.mqttv3-1.0.2.jar) in Plattformen/Android/libs in Ihrem Plugin –

Antwort

1

auf MQTT api Referenz Basierend ich folgende

seine MemoryPersistence und in Ihrem Code bemerkt haben ist MemoryPersist ein nce

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

Stellen Sie sicher, dass Ihre .jar-Datei enthalten in plattformen/Android/libs (link to MQTT jar file v1.0.2)

Ihr package.json sollte in etwa so aussehen (stellen Sie sicher, dass Sie mqtt.android haben. js Datei im Plugin transpiled, wenn Sie in Typoskript codieren)

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

auch sollten Sie mit Ihrem Plugin wie

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

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

An dieser Stelle reffer ich bin Empfangen

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

Von diesem Punkt an sollten Sie Ihre Verbindungsmethode mit der richtigen Datei und Logik d.ts exportieren. Hoffe, dass Info dir mit deinem Projekt helfen wird!

+0

bearbeitet Paket.json –

+1

Dank, dass es behoben. Jetzt versuchen Sie herauszufinden, wie Sie es auf iOS-Teil implementieren. – MorneZaayman

Verwandte Themen