JavaクラスをExtendした自前クラスをTypeScriptで定義し、それを指定の名前空間(パッケージ)のJavaクラスとして宣言する方法。あまり需要はないかもしれませんが、TypeScriptでのサンプルが公式でも不足しており、実装時に意外にハマったので、備忘です。
@JavaProxy("xxx.MyFirebaseInstanceIDService")
export class MyFirebaseInstanceIDService extends com.google.firebase.iid.FirebaseInstanceIdService {
constructor(){
super();
return global.__native(this);
}
}
@JavaProxy が良い仕事をしてくれます。
constructorの実装はNativeScript+TypeScriptでネイティブのクラスを継承したときのお約束。
なお、上のコードは自前でFirebaseのプッシュを実装しようとしたときの例です。このクラスをAndroidManifest.xmlのServiceに定義して呼び出すことはできましたが、もう一つの必須クラスである、FirebaseMessagingServiceを継承したクラスをインスタンス化するのが上手く行かず、断念しました。