微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在离子3中使用cordova插件bluetoothle?

附加信息:

我知道通常的 way访问cordova插件

(<any>window).plugins.myPlugin 

or

declare var yourGloballyAccessablePlugin: any;

但它与插件bluetoothle不同(离子3支持的原生蓝牙插件不够好,因为它们不提供蓝牙外围功能,例如广告)

解决方案:

I found a related question on the ionic forums and asked how they achieved this,到目前为止,我很难复制这个过程,到目前为止没有人回答我的问题,这就是为什么这个问题被打开了.

显然,bluetoothle暴露了一个全局可访问的变量.

如上所述,我在我的src文件夹中添加一个declaration.d.ts文件
具有以下内容

declare module 'cordova-plugin-bluetoothle';
import 'cordova-plugin-bluetoothle';
declare var cordova: any;

然后我尝试访问插件(在我的手机上测试),如下所示:

import { bluetoothle } from 'cordova-plugin-bluetoothle';

...

(<any>window).bluetoothle

问题:

但bluetoothle对我来说总是不确定的.由于我是cordova,ionic和TypeScript的新手我觉得我使用declarations.d.ts的方式有问题.

那么有人知道我做错了什么,我怎么能在离子3中使用cordova原生插件bluetoothle?

更新,解决方案尝试2:

所以我尝试在@Webruster推荐的初始项目结构app.component.ts中使用bluetoothle documentation的init参数运行此代码

(这里唯一的目标是查看插件是否有效)

进口…

declare var cordova: any;

@Component,类开始和属性……

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

但这样应用程序甚至没有加载,它只是超时并输出到服务器的连接是不成功的,当我运行应用程序没有它的工作的插件代码.

更新2:

我用chrome调试了应用程序(之前的错误是由–livereload选项导致的,因为未知原因)
这是我得到的错误

ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'initialize' of undefined
TypeError: Cannot read property 'initialize' of undefined

检查cordova,cordova.plugins和cordova.plugins.bluetoothle的类型
有:

console.log(typeof cordova);
  console.log(typeof cordova.plugins);
  console.log(typeof cordova.plugins.bluetoothle);

我得到以下结果:

object
object
undefined

解决方法

就像通常的方式一样,你可以安装它:

ionic plugin add cordova-plugin-bluetoothle

在此之后包括import语句后面的下面一行,如下所示:

declare var cordova:any;

并在平台准备就绪时使用它:

platform.ready().then(
    () => {
        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
        cordova.plugins.bluetoothle.initialize(initializeResult,params);
    }
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐