2016-06-30 5 views
1

cordova-plugin-fcmをIonic2/TypeScriptと併用したいと思います。ラッパーFCMPlugin.jsは本当にシンプルに見えますが、私はAngular2/TypeScriptのimport文を扱うのに慣れていて、このようなプラグインをIonic2と連携させる方法はわかりません。Ionic 2/TypeScriptで(Cordova)プラグインを使用するには?

私はトークン(FCMPlugin.getToken())を取得するためのコードを使用している場合は、私が取得:

Cannot find name 'FCMPlugin'

私はこのsuggested answer

をしようとすると、私が得る:

Require is not defined

+1

'cordova-plugin-fcm'のtypescript宣言ファイルはありますか? – MarkoCen

+0

いいえ、全く入力がありません。通常、私は何とかそれを回避することができますが、今回は解決策を見つけることができません。このプラグインが、d.tsファイルを持つネイティブのイオン性のネイティブプラグインのように似ているといいですね。 GitHubでいくつかのガイダンスをお願いしましたが、問題は解決しました... – majodi

+0

あなたは非常に簡単な関数を言ったので、あなたはそれのためのTSファイルを書き込もうとすることができます。 – MarkoCen

答えて

0

suggested answerをオンにされます結局働いている。

Require is not defined 

そして私は私が立ち往生していたと思った:

Cannot find name 'FCMPlugin' 

これはその後、私に与えた:私はちょうど私がエラーを取り除くことができるかどうかを確認するには、ブラウザでテストするためにミスを犯しました。 Cordovaはシミュレータまたはリアルデバイス上でのみ動作しますが、私はエラーを取り除くまではブラウザで何らかのテストを行うことができると思いました(私はできませんでした)。しかし、シミュレータやデバイス上でコードを実行する場合は、すべてが問題ありません。

重要なのは、 "名前を見つけることができません"というTypeScriptエラーを取り除かなければならないことです。それ以外の場合は実行されません。ただ、輸入以下

declare var FCMPlugin:any; 

:タイプ定義ファイル(d.tsファイル)なしであなただけのような変数を宣言することができません。

その後、タイプスクリプトエラーはなく、すべてがシミュレータ/デバイス上で正常に動作します。

+0

いいえ、私のために働かなかった。まだ取得:FCMPluginは定義されていません – Richard

0

あなたはそれが活字体で作業したい場合は、@majodiとしてあなたのファイルに宣言することができますが言った:

declare var FCMPlugin: any; 

ができますが、オートコンプリートはありません。

またyourAppName/src/app/fcm-plugin.d.tsに入れてfcm-plugin.d.tsファイルを作成することができ、それは次のようになります。

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

あなたはコルドバのデバイスにしていることを確認した後、fcmPluginを呼び出すことを忘れないでください:

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

そうでなければ、あなたがionic serve

は次に、あなたがちょうど持っているときfcmPlugin does not existsを持っていますfcmPluginを呼び出して、TypeScriptの自動補完マジックを発生させます!

+0

これには何らかの問題があります。プッシュメッセージが受信されたときに 'successCallback'関数が呼び出されたと思われますが、' onNotificationCallback'は呼び出されません。エラーも表示されません。私がトラブルシューティングに目を向けることができるものは何ですか?ありがとう! – demaniak

関連する問題