Zusätzliche Informationen:Wie benutzt man das Cordova Plugin Bluetooth in ionic 3?
wissen, dass ich die üblichen way cordova Plugins zuzugreifen:
(<any>window).plugins.myPlugin
or
declare var yourGloballyAccessablePlugin: any;
aber es ist anders mit der Plugin bluetoothle (dem nativen Bluetooth-Plugins durch ionische 3 unterstützt werden, da sie nicht gut genug keine Bluetooth-Peripheriefunktionalität z. B. Werbung)
Lösungsversuch:
I found a related question on the ionic forums and asked how they achieved this, bisher falle ich den Prozess zu replizieren und niemand beantwortete meine Frage so weit, das ist, warum diese Frage geöffnet wurde.
Offenbar exponiert bluetooth eine global zugängliche Variable.
Da erklärte ich hinzugefügt, um eine declaration.d.ts
Datei auf meinem src
Ordner mit folgendem Inhalt:
declare module 'cordova-plugin-bluetoothle';
import 'cordova-plugin-bluetoothle';
declare var cordova: any;
Ich habe dann versucht, um das Plugin zugreifen (getestet auf meinem Handy) wie folgt aus:
import { bluetoothle } from 'cordova-plugin-bluetoothle';
...
(<any>window).bluetoothle
Problem:
Aber bluetoothle ist immer undef für mich. Da ich cordova, ionic und TypeScript neu bin, schätze ich, dass etwas mit der Art und Weise, wie ich declarations.d.ts verwende, nicht stimmt.
Also weiß jemand, was ich falsch mache, wie kann ich verwenden das cordova native Plugin bluetooth in ionic 3?
UPDATE, Lösung Versuch 2:
Also habe ich versucht, diesen Code innerhalb der ersten Projektstrukturen laufen app.component.ts
wie @Webruster mit dem init params vom bluetoothle empfohlen documentation:
(die nur Ziel ist hier, um zu sehen, ob das Plugin funktioniert)
Importe ...
declare var cordova: any;
@Component, Klasse Start- und Attribute ...
constructor(private translate: TranslateService, platform: Platform, settings: Settings, private config: Config, private statusBar: StatusBar, private splashScreen: SplashScreen) {
platform.ready().then(() => {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
console.log("I'm ready");
// your bluetothle methods can be accessed after
//cordova.plugins.bluetoothle
// for brevity i added a sample method from repo , it can be changed
//based on your need
let initializeResult: object;
let params: object = {
"request": true,
"statusReceiver": false,
"restoreKey": "bluetoothleplugin"
};
cordova.plugins.bluetoothle.initialize(initializeResult, params);
console.log(JSON.stringify(initializeResult));
this.statusBar.styleDefault();
this.splashScreen.hide();
});
this.initTranslate();
}
aber auf diese Weise die App nicht einmal geladen wird, ist es aus nur mal und gibt die Verbindung zum Server nicht erfolgreich war, wenn ich die App ohne die laufen Plugin-Code funktioniert.
UPDATE 2:
gedebuggt ich die App mit Chrom (der vorherige Fehler durch die --livereload Option für einen unbekannten Grund verursacht wurde) und das ist der Fehler, den ich bekommen:
ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'initialize' of undefined
TypeError: Cannot read property 'initialize' of undefined
Überprüfung der Arten von cordova
, cordova.plugins
und cordova.plugins.bluetoothle
mit:
console.log(typeof cordova);
console.log(typeof cordova.plugins);
console.log(typeof cordova.plugins.bluetoothle);
ich folgende Ergebnisse:
object
object
undefined
Um zu verdeutlichen, muss ich nicht unbedingt die Anwendung (die ich für mein Studentenprojekt entwickelt) auf Smartphones portieren, aber da kann ich die meisten wiederverwenden mein Code (weil es mit eckigen 5 geschrieben wird) wäre dies eine nette Erweiterung zu haben – MADforFUNandHappy
gibt es ein paar Fragen, 1. wo ist Ihr Initialisierungscode für die ionische? Wo rufst du diese Methode an? in 'app.component.ts'? – Webruster
Ich habe die Standard-Starter-App von Ionic 3 verwendet und versucht, auf das Plugin zuzugreifen, sobald die Plattform bereit ist, z. Die Platform in den Konstruktor einfügen und dann im Konstruktor darauf zugreifen: this.platform.isReady(). then ((params) => {... hier auf Plugin zugreifen.) Ja, ich meine die app.component.ts-Komponente – MADforFUNandHappy