如何使用Ionic 2 / TypeScript的(Cordova)插件?

时间:2016-06-30 15:10:58

标签: javascript cordova typescript ionic-framework

我想将cordova-plugin-fcm与Ionic2 / TypeScript一起使用。包装器FCMPlugin.js看起来很简单,但我习惯使用Angular2 / TypeScript处理import语句,并且不知道如何使用这样的插件来使用Ionic2。

如果我使用代码获取令牌(FCMPlugin.getToken()),我会得到:

  

找不到名称'FCMPlugin'

当我尝试这个suggested answer

我明白了:

  

未定义要求

2 个答案:

答案 0 :(得分:0)

事实证明suggested answer正在发挥作用。我只是错误地在浏览器中测试,看看我是否可以摆脱错误:

Cannot find name 'FCMPlugin'

然后给了我:

Require is not defined

我以为我被卡住了。 Cordova只能在模拟器或真实设备上运行,但我认为我可以先在浏览器中进行一些测试,直到我摆脱错误(我无法做到)。但是,在模拟器或设备上运行代码时,一切都很好。

重要的是,你必须摆脱TypeScript错误“找不到名字”否则它将无法运行。要在没有类型定义文件(d.ts文件)的情况下执行此操作,您只需声明一个类似的变量:

declare var FCMPlugin:any;

低于进口货物。

然后就没有TypeScript错误,一切都在模拟器/设备上运行得很好。

答案 1 :(得分:0)

如果您希望它与TypeScript一起使用,您可以在文件中声明 @majodi 说:

A1

但你不会自动完成。

您还可以创建一个declare var FCMPlugin: any; 文件放入fcm-plugin.d.ts,它应该如下所示:

yourAppName/src/app/fcm-plugin.d.ts

在检查您使用的是Cordova设备后,请不要忘记拨打fcmPlugin:

declare var fcmPlugin: FCMPlugin.IFCMPlugin;

// Support AMD require
declare module 'fcmPlugin' {
    export = fcmPlugin;
}

declare namespace FCMPlugin {
    interface IFCMPlugin {
        onNotification(onNotificationCallback, successCallback, errorCallback);
        getToken(successCallback, errorCallback);
        onTokenRefresh(onTokenRefreshCallback);
        subscribeToTopic(topic: string, successCallback, errorCallback);
        unsubscribeFromTopic(topic: string, successCallback, errorCallback);
    }
}

当您执行if (platform.is('cordova')) { fcmPlugin.getToken(token => { console.log('getToken() succeed: ', token); }, err => { console.error('getToken() failed: ', err); }); }

时,将会有fcmPlugin does not exists

然后你只需要调用fcmPlugin并让TypeScript自动完成魔术发生!